Mybatis-resultMap嵌套collection查询

日常业务逻辑中,经常出现类似以下场景:
  1. 查询数据库A表,返回数据列表List<A>

  1. 列表中的A元素中,含List<B>字段(List<B>数据来自数据库B表)

基本查询方法(常用):
  1. 查询List<A>

  1. 循环List<A>

  1. 循环嵌套查询List<B>

  1. List<B>结果存入List<A>

Mybatis嵌套查询方法(推荐):

假设:

已有a表,表中含有字段bid,对应b表字段id

a表对应实体类:A(id,name,bid)

b表对应实体类:B(id,name)

实现步骤:
  1. 编写查询A表xml:

  1. 编写步骤1中的resultMap:

  1. 上图效果:将getAListResult返回结果中元素的bid字段取出,作为id字段筛选值传入getBList方法,并将返回结果存入getAListResult中对应元素的bList字段,实现类循环嵌套查询效果

  1. 实际并非完全循环外层List<A>,如:外层List<A>中共有10条返回结果,且前5条的bid都为1,后5条的bid都为2,则内层循环只会执行两次查询(同一个条件只会执行一次),即b.id=1及b.id=2各执行一次查询,而不是循环执行10次查询

  1. 编写步骤2中<collection>标签中的select方法:

  1. BMapper:

  1. mapper.xml:

  1. 完成~

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值