解决mybatis实现一对多查询和使用PageHelper插件出现的问题

一般使用pageHelper插件进行分页,这次在springBoot的项目中遇到个问题,在使用mybatis一对多嵌套查询进行分页的时候出现了数据显示异常,原本需要查询 pageNum=1,pageSize=10,也就是10条数据,可是查出来的数据只有4条。

先放两张查询数据库截图

这是主表
在这里插入图片描述
这是副表
在这里插入图片描述

主表通过 shop_file 和附表的 file_name关联

下面直接放我解决这个问题后的代码

通过嵌套子查询的方式去解决这个问题

  • 先写好resultMap 这里要注意的是 column里面放的时候主表的字段名称
  • 因为需要通过这个数据去副标里面查询对应的数据

在这里插入图片描述

  • 主查询sql语句
	<select id="selectShopParams" resultMap="mini_ShoplistResult"  >
        select  
        a.shop_id,a.shop_area,a.shop_rent, a.shop_is_cook,
        a.shop_other, a.shop_create_time,a.shop_region,a.shop_file,
        from shop_info a
    </select>
  • 子嵌套查询语句
  • 先需要在mapper接口文件里面加上新的一个方法
  • 我直接把对象当参数放入到mapper的方法里面,所以sql语句中 使用#{shopFile}
    在这里插入图片描述
	<select id="selectShopFile" resultType="java.util.Map"  >
        select
         b.file_id,b.file_name,b.file_path
        from
         sys_file_info b
         where b.file_name =#{shopFile}
    </select>

到这里就完成了,自行测试方法。
使用这种方法的弊端就是主查询每查询一次,子查询就会也会跟着查询多次,就出现了 1+N的情况。
解决方案:可以开启mybatis的懒加载

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值