【MyBatis】学习纪要五:resultMap
这一节我们来讲讲 resultMap。因为前面几节已经提供大量实例代码,本节不再引入,需要的,可以进我的github,clone or download import your tool try run (methods)
欢迎你Star,或者 Follow
首先来分享一个技巧:
domain 别名 @Alias("name")
但不推荐这么用,因为指定实体类的类路径就已经很简化了。
好,下面我们开始今天的内容!
Map-
Map<Object, Object>
你只需要这么写resultType="map"
- Map<Object, POJO>
需要接口上指定Map的key@MapKey
resultMap 封装格式
<resultMap>
<id /> 主键 底层有优化
column:列名
property:对象的属性
<result>
</>
关联查询
- 自定义封装
实例代码:
<resultMap id="cp" type="City">
<id column="cId" property="id"/>
<result column="cName" property="name" />
<result column="pId" property="province.id" />
<result column="pName" property="province.name" />
</resultMap>
- association
1、association 自定义单个对象的封装规则
属性 属性对象类型
<association property="" javaType=""></>
实例代码:
CityMapper.xml
<!-- City findById3 (Integer id); -->
<resultMap id="cp" type="City">
<id column="cId" property="id"/>
<result column="cName" property="name" />
<association property="province" javaType="Province">
<id column="pId" property="id" />
<result column="pName" property="name" />
</association>
</resultMap>
<select id="findById3" resultMap="cp">
SELECT
c.id as cId,
c.name as cName,
p.id as pId,
p.name as pName
FROM
city c, province p
WHERE
c.province_id = p.id
AND
c.id = #{id}
</select>
2、association 分布查询
<association property="" select="......Mpper.get..." column=""></>
实例代码:
CityMapper.xml
<!--
association 分步查询
City findById4 (Integer id);
-->
<resultMap id="cp2" type="City">
<id column="id" property="id"/>
<result column="name" property="name" />
<association property="province"
select="com.fengwenyi.mybatis.demo2.dao.ProvinceDao.findById2"
column="id"
><!--fetchType="lazy" // 懒加载-->
<id column="id" property="id" />
<result column="name" property="name" />
</association>
</resultMap>
<select id="findById4" resultMap="cp2">
SELECT
*
FROM
city
WHERE
id = #{id}
</select>
- collection
指定集合里面的元素类型
<collection property="" ofType=""></>
分布查询
使用延迟加载 lazy:延迟加载 / eager:立即
<collection property="" select="" column="" fetchType="lazy"></>
延迟加载
lazyLoadingEnabled=true
4、多列的时候怎么传?
封装Map
column="{key1=column1, key2=column2,....}"
5、discriminator 鉴别器
MyBatis 可以使用discriminator判断某列的值,然后根据某列的值改变封装行为
<discriminator javaType="" column="">
<case value="" resultType="">
</>
</>
实例代码:
<!--
测试鉴别器 discriminator
City findById5 (Integer id);
-->
<resultMap id="cp5" type="City">
<id column="id" property="id"/>
<result column="name" property="name" />
<discriminator javaType="String" column="name">
<case value="巴中" resultType="City">
<id column="id" property="id"/>
<result column="id" property="name" />
</case>
</discriminator>
</resultMap>
<select id="findById5" resultMap="cp5">
SELECT
id, name
FROM
city
WHERE
id = #{id}
</select>
点击查看更多内容
为 TA 点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦