一般使用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的懒加载

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐