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