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);