mybatis 使用resultMap踩坑

需求查询返回分页list且每个list中的对象有一个list对象不想在代码上做for循环重复查询因此使用resultMap对实体做映射和子查询
直接贴xml

<!-- aaaa 实体内包含了bbbb 的List集合-->
<resultMap type="com.xxxx.aaaa" id="xxxxMap">
	<id column="id" property = "id"/>
    <id column="state" property = "state"/>
    <!--  property bbbList 是aaaa实体的字段 select 子查询名称 column 主表的主键对应子查询的入参-->
    <collection property="bbbList" ofType="com.xxxx.bbbb"
                    javaType="ArrayList" select="selectbbbbList" column="id">
            <id column="id" property = "id"/>
            <id column="a_id" property = "a_id"/>
    </collection>
</resultMap>

<sql id="a_sql">
	id,state
</sql>
<sql id="b_sql">
	id,a_id
</sql>

<sql id="where_query">
	<where>
		1 = 1 
	</where>
</sql>

<select id="getAt"  parameterType="com.xxxx.aaaa" resultMap="xxxxMap">
	select  <include refid="a_sql"/> from aa   
	<include refid="where_query"/>
          order by r.iddesc
          offset #{start} rows fetch next #{pageSize} rows only
</select>
<select id = "selectbbbbList" resultType = "com.xxxx.bbbb">
        select  <include refid="b_sql"/>  from bb h where h.a_id= #{id}
        order by h.delivery_date desc
        </select>
<select id="getACount" resultType="java.lang.Integer">
        select  count(1) from aa r
        <include refid="rehabilitationTreatment_query"/>
    </select>

大概就是这样,之前没用子查询会导致说查出来sql10条,但是因为关联查询了b表会出现count 20条的情况。这样查询子查询就可以避免这个问题。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值