Github地址
pagehelper是github上开源的分页插件,可以做到无侵入,不用修改select语句的分页插件,它应该是通过调用mybatis钩子,在查询时自动修改查询语句,自动加上limit语句做到分页的。
导入依赖
1 2 3 4 5
| <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper-spring-boot-starter</artifactId> <version>1.2.5</version> </dependency>
|
使用介绍
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; ====== @Override public PageResult search(LetterSign letterSign, PageIndex pageIndex) { if (pageIndex.getPageSize() == null) { pageIndex.setPageSize(20); } if (pageIndex.getPageNo() == null) { pageIndex.setPageNo(1); } PageHelper.startPage(pageIndex.getPageNo(), pageIndex.getPageSize()); List<LetterSign> list = letterSignMapper.searchSelective(letterSign); if (list.size() == 0) { return PageResult.success("数据为空"); } PageInfo pageInfo = new PageInfo<LetterSign>(list); return PageUtils.getPageResult(pageInfo); }
|
PageHelper.startPage 这个api我看过,底层用的是LocalThread类,将数据暂存在线程上,然后在mybatis的钩子中,从线程里把pageNo、pageSize取出来,设计的还是很巧妙的。
PageInfo 就是对Page结果进行包装
2). PageHelper.startPage 静态方法调用
除了 PageHelper.startPage 方法外,还提供了类似用法的 PageHelper.offsetPage 方法。
在你需要进行分页的 MyBatis 查询方法前调用 PageHelper.startPage 静态方法即可,紧跟在这个方法后的第一个MyBatis 查询方法会被进行分页。