mybatis 使用其它Mapper的resultMap 和 sql 片段

我们公司目前的开发是代码生成的Mapper 是不能动的,要写自己的Mapper只能基于原Mapper定义extMapper, 有时候我们想用原来的Mapper 的resultMap的话怎么办呢?很简单,直接用Mapper.resultMapId 就行,下面给出简单的例子,是一个Mapper引用另外一个Mapper的resultMap的 sql
主Mapper TblFasfdfssaveInfoMapper.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="com.su.dao.TblFasfdfssaveInfoMapper" >
  <resultMap id="BaseResultMap" type="com.su.vo.TblFasfdfssaveInfo" >
    <id column="id" property="id" jdbcType="INTEGER" />
    <result column="savePath" property="savePath" jdbcType="VARCHAR" />
  </resultMap>
<sql id="Base_Column_List" >
  id, /*savePath,*/ url, cTime, /*uTime,*/ cUser, uUser, fileName
</sql>
</mapper>

外部Mapper TblFasfdfssaveInfoExtMapper ,引用 TblFasfdfssaveInfoMapper.xml 的resultMap和sql片段:

<?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="com.su.dao.TblFasfdfssaveInfoExtMapper" >

    <select id="selectBySavePath" resultMap="com.su.dao.TblFasfdfssaveInfoMapper.BaseResultMap">/*此处引用了com.su.dao.TblFasfdfssaveInfoMapper的 BaseResultMap*/
        SELECT
          <include refid="com.su.dao.TblFasfdfssaveInfoMapper.Base_Column_List"  />/*此处引用了com.su.dao.TblFasfdfssaveInfoMapper 中ID 为 Base_Column_List 的字段 */
          FROM tblfasfdfssaveinfo WHERE savePath = #{savePath}
    </select>
</mapper>

由此可见,Mapper 的sql字段和resultMap等是可以互相引用的, 但是最好是两个Mapper其实是操作一张表,这样在业务上来区分,避免业务上的混乱以及便于理解

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值