Springboot整合PageHelper分页
Springboot+Mybatis配置多数据源使用PageHelper分页
方法一
1、pom依赖
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>4.2.1</version>
</dependency>
2、Bean注入,调整属性
@Bean public PageHelper pageHelper() { PageHelper pageHelper = new PageHelper(); Properties properties = new Properties(); properties.setProperty("offsetAsPageNum", "true"); properties.setProperty("rowBoundsWithCount", "true"); properties.setProperty("reasonable", "true"); properties.setProperty("dialect", "mysql"); //postgresql的同理 pageHelper.setProperties(properties); return pageHelper; }
使用技巧:
PageHelper.startPage(page, limit);
List<User> list = userMapper.selectList(null);
Long count = ((com.github.pagehelper.Page<User>) list).getTotal();
方法二
1、pom依赖
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.2.13</version>
</dependency>
2、配置
pagehelper.offsetAsPageNum=true
pagehelper.rowBoundsWithCount=true
pagehelper.pageSizeZero=true
pagehelper.reasonable=false
pagehelper.params=pageNum=pageHelperStart;pageSize=pageHelperRows;
pagehelper.supportMethodsArguments=false
3、按需配置
PageHelper.startPage(page, limit, "id");//id升序
List <User> list = userService.getList();
long count=new PageInfo(list).getTotal();
//获取页数
int pages = new PageInfo(list).getPages();
切记:夹在中间的list只能有一个!!!
切记排序字段不唯一可能导致分页数据重复(Oracle)比较典型
====================================================
追加:某些逻辑需要返回的数据进行下一步操作可以使用工具类,需考虑list大小,否则可能会导致爆内存
public class PageUtil { /** * @param list 数据如 List<User> * @param pageNum 第几页 * @param pageSize 一页多少条 * @return */ public static List startPage(List list, Integer pageNum, Integer pageSize) { if(list == null) { return null; } if(list.size() == 0) { return null; } Integer count = list.size(); // 记录总数 Integer pageCount; // 页数 if(count % pageSize == 0) { pageCount = count / pageSize; } else { pageCount = count / pageSize + 1; } int fromIndex; // 开始索引 int toIndex; // 结束索引 if(!pageNum.equals(pageCount)) { fromIndex = (pageNum - 1) * pageSize; toIndex = fromIndex + pageSize; } else { fromIndex = (pageNum - 1) * pageSize; toIndex = count; } List pageList = list.subList(fromIndex, toIndex); return pageList; } }
浙公网安备 33010602011771号