java中各种常用分页插件:
-
MyBatis分页插件:MyBatis提供了一种分页插件,可以通过配置实现分页查询。使用MyBatis分页插件需要在配置文件中添加插件配置。
-
PageHelper:PageHelper是一个开源的MyBatis分页插件,可以通过简单的配置实现分页查询。它支持MySQL、Oracle、PostgreSQL、SQL Server等数据库。
-
JPA分页插件:JPA提供了一种分页插件,可以通过配置实现分页查询。使用JPA分页插件需要在配置文件中添加插件配置。
这些分页的核心原理都是大相径庭,
这样进行分页,但是在常用的代码中有一个小坑,如下这样的分页是不生效的:
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);
代码帖出来了,粘贴可用。