MybatisPlus のページングの落とし穴

MybatisPlus のページングの落とし穴

ページングに関しては、MybatisPlus は、ページング パラメーターを返すのを容易にするために、IPage 受信値を提供します。
具体的な形式は次のとおりです。

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

まず、私が遭遇した問題を見てみましょう。
ここに画像の説明を挿入します
ここに画像の説明を挿入します
これら 2 つの図から、2 番目の SQL を実行した後、前の SQL のデータが直接クリアされたことがわかります。後で、それがページの問題であることがわかりました。同じページ パラメータを共有できなかったため、前のパラメータが発生しました。データは直接クリアされます

解決

1. 各 SQL は独自のページを使用します

#例如第一个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 の 1 つをリストやセットなどの他の形式に返します。

 //判断角色是否存在
        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);

おすすめ

転載: blog.csdn.net/weixin_52796198/article/details/131222918