mybatis 配置返回集合collection时只有一条记录

编程入门 行业动态 更新时间:2024-10-05 23:28:23

<a href=https://www.elefans.com/category/jswz/34/1769966.html style=mybatis 配置返回集合collection时只有一条记录"/>

mybatis 配置返回集合collection时只有一条记录

查询语句配置如下:

<select id="selectCustomerList" resultMap="CustomerDtoMap" parameterType="map">select * from(select <include refid="AliasCustomerColumnList"/>from customer c) cleft join display_venue_reserve dvron c.c_customer_id = dvr.customer_id where 1=1<if test="customerMgrId != null">and c.c_customer_mgr_id = #{customerMgrId}</if><if test="status != null">and dvr.status = #{status}</if>
</select>

resultMap配置如下

<resultMap id="CustomerDtoMap" type="com.al.ec.showroom.dto.customer.CustomerDto" extends="AliasBaseResultMap"><collection property="displayVenueReserveDtoList" ofType="com.al.ec.showroom.dto.display.DisplayVenueReserveDto"><association property="displayVenueReserve" column="VENUE_RESERVE_ID" javaType="com.al.ec.showroom.model.display.DisplayVenueReserve"resultMap="com.al.ec.showroom.mapper.display.DisplayVenueReserveMapper.BaseResultMap"></association></collection></resultMap>

查询出结果如下:

只有一条记录,但是数据库直接执行语句是有多条记录的

 

经过很多轮的改代码研究,发现是因为

<collection property="displayVenueReserveDtoList" ofType="com.al.ec.showroom.dto.display.DisplayVenueReserveDto"><association property="displayVenueReserve" column="VENUE_RESERVE_ID" javaType="com.al.ec.showroom.model.display.DisplayVenueReserve"resultMap="com.al.ec.showroom.mapper.display.DisplayVenueReserveMapper.BaseResultMap"></association></collection>
需要在collection节点下添加
<id column="dvr_VENUE_RESERVE_ID" property="venueReserveId" jdbcType="DECIMAL"></id>

更改后代码如下

<resultMap id="CustomerDtoMap" type="com.al.ec.showroom.dto.customer.CustomerDto" extends="AliasBaseResultMap"><collection property="displayVenueReserveDtoList" ofType="com.al.ec.showroom.dto.display.DisplayVenueReserveDto"><id column="VENUE_RESERVE_ID" property="venueReserveId" jdbcType="DECIMAL"></id><association property="displayVenueReserve" column="VENUE_RESERVE_ID" javaType="com.al.ec.showroom.model.display.DisplayVenueReserve"resultMap="com.al.ec.showroom.mapper.display.DisplayVenueReserveMapper.AliasBaseResultMap"></association></collection></resultMap>

一直以为<association>节点有column属性就可以作为主键就可以了。。。。原来是需要在<collection>下添加id子节点

查询结果如下

但是对于这样配置的原理还不是很了解,如果知道的大神希望能在评论里给出回复,感谢

小白,刚接触mybatis不久,记录在此,谨记于心~~














转载于:.html

更多推荐

mybatis 配置返回集合collection时只有一条记录

本文发布于:2024-03-05 21:29:53,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1713485.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:mybatis   collection

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!