MyBatis-Plus
自带分页PaginationInterceptor
对象,但想要用MyBatis-Plus自带的分页功能的话需要在mapper对象中传入一个Page对象才可以实现分页;
PageHelper
是国内非常优秀的一款开源的mybatis分页插件,它支持基本主流与常用的数据库,例如mysql、oracle、mariaDB、DB2、SQLite、Hsqldb等。
1.pom引入(springBoot项目)
com.github.pagehelper
pagehelper-spring-boot-starter
1.4.3
com.baomidou
mybatis-plus-boot-starter
3.5.2
2.配置文件
mybatis-plus:
mapper-locations: classpath*:mapper/*.xml
# 设置别名包扫描路径,通过该属性可以给包中的类注册别名
type-aliases-package: com.example.springbootdemo.entity
configuration: #开启日志
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
pagehelper:
auto-dialect: on #分页插件会自动检测当前的数据库链接,自动选择合适的分页方式
reasonable: true #分页合理化参数,默认值为 false 。当该参数设置为 true 时, pageNum<=0 时会查询第一页, pageNum>pages (超过总数时),会查询最后一页
support-methods-arguments: true #支持通过Mapper接口参数传递page参数,默认值为false
page-size-zero: true #默认值为 false ,当该参数设置为 true 时,如果 pageSize=0 或者 RowBounds.limit =0 就会查询出全部的结果(相当于没有执行分页查询,但是返回结果仍然是 Page 类型)
3.使用
/**
* pageInfo对象中属性含义
* private int pageNum;//当前页码
* private int pageSize;//设置每页多少条数据
* private int size;//当前页有多少条数据
* private int startRow;//当前页码第一条数据的
* private int endRow;//当前页码的开始条
* private int pages;//当前页码结束条
* private int prePage;//上一页(页面链接使用)
* private int nextPage;//下一页(页面链接使用)
* private boolean isFirstPage;//是否为第一页
* private boolean isLastPage;//是否为最后一页
* private boolean hasPreviousPage;//是否有前一页
* private boolean hasNextPage;//是否有下一页
* private int navigatePages;//导航页码数(就是总共有多少页)
* private int[] navigatePageNums;//导航页码数(就是总共有多少页),可以用来遍历
* private int navigateFirstPage;//首页号
* private int navigateLastPage;//尾页号
*/
@Test
void test() {
int pageNum = 1;
int pageSize = 3;
//1.引入分页插件,pageNum是第几页,pageSize是每页显示多少条,默认查询总数count
Page page = PageHelper.startPage(pageNum, pageSize);
//2.紧跟的查询就是一个分页查询-必须紧跟,这样才能保证安全分页, PageHelper 在 finally 代码段中自动清除了 ThreadLocal 存储的对象
List articleList = apArticleService.list();
//3.使用PageInfo包装查询后的结果,3是连续显示的条数
PageInfo pageInfo = new PageInfo(articleList ,pageSize);
System.out.println("总记录数:" + pageInfo.getTotal());
System.out.println("总页数:" + pageInfo.getPages());
System.out.println("一页的大小:" + pageInfo.getSize());
System.out.println("是否有前一页:" + pageInfo.isHasPreviousPage());
}