Mybatis一对多查询时无法合并子表数据的问题

大部分情况下,pojo和xml的定义都不会有问题,resultMap也不会有毛病

但如果mybatis返回的结果是多条,没有合并,可能是因为查询结果中缺少主表的ID,mybatis不知道根据什么字段合并。一定要在select的字段中加入主表ID。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MyBatis 中进行一对多映射,可以使用嵌套查询或嵌套结果映射来完成。下面是具体的实现方法: 1. 嵌套查询 嵌套查询是指在主查询中使用子查询来获取从表的数据,然后将这些数据与主表数据合并返回。这种方式需要在 SQL 语句中使用嵌套查询语句,例如: ``` <select id="selectUser" resultType="User"> select * from user where id=#{id}; select * from order where user_id=#{id}; </select> ``` 这样就能同查询出用户信息和该用户的所有订单信息。在使用,可以将多条 SQL 语句封装到一个 Mapper 接口中,并在 XML 配置文件中进行配置。 2. 嵌套结果映射 嵌套结果映射是指在主查询的结果集中包含从表的数据,然后使用 MyBatis 的 resultMap 映射方式进行映射。这种方式需要在 XML 配置文件中定义 resultMap,并使用 collection 元素来定义从表的映射关系,例如: ``` <resultMap id="userMap" type="User"> <id property="id" column="id"/> <result property="name" column="name"/> <collection property="orders" ofType="Order"> <id property="id" column="order_id"/> <result property="price" column="price"/> </collection> </resultMap> ``` 这样就能同查询出用户信息和该用户的所有订单信息,并将其映射到 User 对象中。在使用,只需要在 SQL 语句中使用 JOIN 或 LEFT JOIN 连接主表和从表即可。 总之,MyBatis 中进行一对多映射可以使用嵌套查询或嵌套结果映射来完成,具体的实现方式需要根据具体的场景和需求来选择。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值