MybatisPlus中分页的坑

文章讲述了在使用MybatisPlus进行分页查询时遇到的数据被清空的问题,原因是多个SQL查询间共享了同一个Page对象。解决方案是为每个SQL使用独立的Page对象,或者将其中一个查询结果转换为List或Set。
摘要由CSDN通过智能技术生成

MybatisPlus中分页的坑

MybatisPlus在分页方面了提供了一个IPage的接收值方便我们返回分页参数
具体格式为:

    {...},					  # 返回的数据
    "total": 81,			  # 总数据量
    "size": 10, 			  # 每页多少数据
    "current": 1, 			  # 当前页
    "orders": [],  			  # 获取排序信息,排序的字段和正反序
    "optimizeCountSql": true, # 自动优化
    "searchCount": true, 	  # 进行 count 查询
    "countId": null,		  # 老分页插件不支持
    "maxLimit": null,		  # 最大每页分页数限制
    "pages": 9				  # 总页数
  

先看看我遇到的问题
在这里插入图片描述
在这里插入图片描述
通过这两张图可见在执行了后面一条的sql后,上一条的数据直接清空,后面发现是page的问题,两个sql没法共用一个page参数导致的前一条的数据直接清空了

解决方案

1、每个sql使用各自的page

#例如第一个sql
Page<SysAppRoleAuth> page = new Page<>(pageNo, pageSize);
IPage<SysAppRoleAuth> roleAuthList = appRoleAuthMapper.selectByRoleId(page,id);

#第二个sql
Page<SysAppRoleAuth> page1 = new Page<>(pageNo, pageSize);
IPage<SysAppRoleAuth> list = appRoleAuthMapper.selectAuthModule(page1,id);

2、将其中一个sql返回其他的形式,例如list或者set

 //判断角色是否存在
        Page<SysAppRoleAuth> page = new Page<>(pageNo, pageSize);
        List<SysAppRoleAuth> roleAuthList = appRoleAuthMapper.selectByRoleId(id);
        if (roleAuthList.size() == 0) {
            return Result.error("角色不存在");
        }
        //查询有权限的模块
        IPage<SysAppRoleAuth> list = appRoleAuthMapper.selectAuthModule(page,id);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值