栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

MyBatis-自定义映射ResultMap

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

MyBatis-自定义映射ResultMap

目录

一、基本使用

二、多对一查询(如员工->部门)

2.1 使用association标签

2.2 基于association的分步查询

三、一对多查询(如部门->员工)

3.1 使用collection标签

3.2 基于collection的分步查询

三、关于分步查询


        若字段名和实体类中的属性名不一致,则可以通过resultMap属性及标签设置自定义映射

一、基本使用

resultMap:设置自定义映射

属性:

        id:表示自定义映射的唯一标识

        type:查询的数据要映射的实体类的类型

子标签:

        id:设置主键的映射关系

        result:设置普通字段的映射关系

        association:设置多对一的映射关系

        collection:设置一对多的映射关系

子标签属性:

        property:映射关系中实体类中的属性名

        column:映射关系中表中的字段名

        将字段名与属性名进行映射:

List getAllEmp();
 
        
        
        
        
        



        select *from t_emp
 

二、多对一查询(如员工->部门)

2.1 使用association标签

association 标签的属性:

        property-映射关系中实体类中的属性名

        javaType-类似于type属性

子标签的形式与resultmap标签一样


    
    
    
    
    
        
        
    





    select * from t_dept where did = #{did}


    
    
    
    
    
    




    select dept.*,emp.* from t_dept dept left join t_emp emp on dept.did =
    emp.did where dept.did = #{did}

3.2 基于collection的分步查询

collection标签的属性:

    property-映射关系中实体类中的属性名
    select:设置分步查询,查询某个属性的值的sql的标识(namespace.sqlId)
    column:将sql以及查询结果中的某个字段设置为分步查询的条件

Dept getDeptByStep(@Param("did") int did);
List getEmpListByDid(@Param("did") int did);


    select * from t_dept where did = #{did}

三、关于分步查询

        分步查询的优点:可以实现延迟加载,但是必须在核心配置文件中设置全局配置信息: lazyLoadingEnabled:延迟加载的全局开关。

        当开启时,所有关联对象都会延迟加载,此时可通过association和 collection中的fetchType属性设置当前的分步查询是否使用延迟加载,

        fetchType="lazy(延迟加载) | eager(立即加载)"

        举例来说,假如我们的分步查询要用到员工表和部门表,开启了延迟加载。接下来我只用到了结果中员工信息,则此时对应部门表的那段SQL语句就不执行了。

暑期编程PK赛 得CSDN机械键盘等精美礼品!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1016541.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号