百木园-与人分享,
就是让自己快乐。

github的pageHelper分页和手动分页

java中各种常用分页插件:

  1. MyBatis分页插件:MyBatis提供了一种分页插件,可以通过配置实现分页查询。使用MyBatis分页插件需要在配置文件中添加插件配置。

  2. PageHelper:PageHelper是一个开源的MyBatis分页插件,可以通过简单的配置实现分页查询。它支持MySQL、Oracle、PostgreSQL、SQL Server等数据库。

  3. JPA分页插件:JPA提供了一种分页插件,可以通过配置实现分页查询。使用JPA分页插件需要在配置文件中添加插件配置。

这些分页的核心原理都是大相径庭,

举例sql为:select name from students。如果是mysql分页就是select name from students limit 0,10
java中的分页插件操作技巧是 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的方法是下面这样的

 

 

 那就可以分页成功。

 

或者进行手动分页,对所有的都生效:

 

 

 

    Integer pageNum = page;
Integer pageSize = page_size; // 每页显示的条数
List<UserRoleListVO> userList = userService.findUserNamesByResourceId(companyOrProjectId, isCompany,nameOrphone,roleId);
int totalSize = userList.size(); // 总条数
int totalPage = (totalSize + pageSize - 1) / pageSize; // 总页数
int startIndex = (pageNum - 1) * pageSize; // 起始索引位置

List<UserRoleListVO> pageList = new ArrayList<>();
if (startIndex < totalSize) {
int endIndex = Math.min(startIndex + pageSize, totalSize);
pageList = userList.subList(startIndex, endIndex);
}
return R.ok(pageList, totalSize);
代码帖出来了,粘贴可用。

来源:https://www.cnblogs.com/CarlJohnson9527/p/17269922.html
本站部分图文来源于网络,如有侵权请联系删除。

未经允许不得转载:百木园 » github的pageHelper分页和手动分页

相关推荐

  • 暂无文章