版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/chenbetter1996/article/details/84671335
ResultMap的作用
主要是对于<select>查询得到的结果做数据表到POJO
- ResultMap可以不写全所有属性(即可以省略同名的,驼峰的不能省略)
跨文件共享
编写
如下写一个ResultMap.xml保存结果集
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- 共用的结果集-->
<mapper namespace="xyz.cglzwz.dao.Common">
<resultMap id="storeResultMap" type="store">
<id column="pk_id" property="id"/>
<result column="uk_name" property="name"/>
<result column="founding_time" property="foundingTime"/>
<result column="introduction" property="introduction"/>
<result column="address" property="address"/>
<result column="img_url" property="imgUrl"/>
</resultMap>
<resultMap id="applyStoreResultMap" type="applyStore">
<id column="pk_id" property="id"/>
<result column="owner_id" property="ownerId"/>
<result column="store_name" property="storeName"/>
<result column="store_introduction" property="storeIntroduction"/>
<result column="apply_time" property="applyTime"/>
<result column="status" property="status"/>
</resultMap>
<resultMap id="bookResultMap" type="book">
<id property="id" column="pk_id"/>
<!-- 省略可以自动映射的字段,驼峰映射不能省略 -->
<result column="publication_house" property="publicationHouse"/>
<result column="publication_date" property="publicationDate"/>
<result column="sale_volume" property="saleVolume"/>
<result column="img_url1" property="imgUrl1"/>
<result column="img_url2" property="imgUrl2"/>
<result column="img_url3" property="imgUrl3"/>
<result column="img_url4" property="imgUrl4"/>
<result column="img_url5" property="imgUrl5"/>
</resultMap>
....
</mapper>
结果集mapper的命名空间可以随意写,因为也没有对应的映射器接口。
比如直接写namespace="common"也是可以的。
调用
在需要的结果集映射里写 resultMap="xyz.cglzwz.dao.Common.结果集id" 即可
如下某个mapper文件
....
...
<select id="selectStoreBookShow" parameterType="int" resultMap="xyz.cglzwz.dao.Common.bookResultMap">
SELECT * FROM tb_book WHERE `show` = 1 AND pk_id IN
((SELECT book_id FROM tb_store_book WHERE store_id = #{storeId}))
</select>
</mapper>