github的pageHelper分页和手动分页

打印 上一主题 下一主题

主题 1029|帖子 1029|积分 3087

java中各种常用分页插件:

  • MyBatis分页插件:MyBatis提供了一种分页插件,可以通过配置实现分页查询。使用MyBatis分页插件需要在配置文件中添加插件配置。
  • PageHelper:PageHelper是一个开源的MyBatis分页插件,可以通过简单的配置实现分页查询。它支持MySQL、Oracle、PostgreSQL、SQL Server等数据库。
  • JPA分页插件:JPA提供了一种分页插件,可以通过配置实现分页查询。使用JPA分页插件需要在配置文件中添加插件配置。
这些分页的核心原理都是大相径庭,
举例sql为:select name from students。如果是mysql分页就是select name from students limit 0,10java中的分页插件操作技巧是 select * from (java类中创建的SQL语句) limit x,y;其中的x和y就是前端传给后端的pageNum和pageSize,只是插件jar包把其中的复杂性都封装了,但是原理都是这样的。这样的分页是针对简单的sql且都写在一个sql中。这样进行分页,但是在常用的代码中有一个小坑,如下这样的分页是不生效的:
Controller层:

 
 
 impl层:

 

 
 
 
上面的每个userMapper都对应一个xml中的sql,这样是不行的,因为这样操作就成了 select * from (select * from user a   select * from user b) limit 0,10
这样有了两个并行的sql,是无法limit,所以会失败,
如果要生效,如果上面getUserRoleListByDeptId的方法是下面这样的

 
 
 那就可以分页成功。
 
或者进行手动分页,对所有的都生效:

 
 
 
  1.     Integer pageNum = page;<br>    Integer pageSize = page_size; // 每页显示的条数<br>    List<UserRoleListVO> userList = userService.findUserNamesByResourceId(companyOrProjectId, isCompany,nameOrphone,roleId);<br>    int totalSize = userList.size(); // 总条数<br>    int totalPage = (totalSize + pageSize - 1) / pageSize; // 总页数<br>    int startIndex = (pageNum - 1) * pageSize; // 起始索引位置<br><br>    List<UserRoleListVO> pageList = new ArrayList<>();<br>    if (startIndex < totalSize) {<br>      int endIndex = Math.min(startIndex + pageSize, totalSize);<br>      pageList = userList.subList(startIndex, endIndex);<br>    }<br>    return R.ok(pageList, totalSize);<br>代码帖出来了,粘贴可用。
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

用户云卷云舒

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表