pageHelper是一款免费的分页插件,可以适用于多种数据库。
使用分页插件可以大大减少代码量,这里将介绍分页插件的使用方法。
1.下载地址
https://github.com/pagehelper/Mybatis-PageHelper
这里我使用的是 jsqlparser-2.0.jar+pagehelper-5.1.10.jar
2.使用方法:
2.1配置分页助手:
在conf.xml中添加如下代码,注意添加在<properties resource="db.properties"/>后面
<!-- 配置分页插件 --> <plugins> <!-- com.github.pagehelper为PageHelper类所在包名 --> <plugin interceptor="com.github.pagehelper.PageInterceptor"> <!-- 设置数据库类型 Oracle,Mysql,MariaDB,SQLite,Hsqldb,PostgreSQL六种数据库--> <property name="helperDialect" value="mysql"/> </plugin> </plugins>
2.2定义UsersMapper.xml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!-- com.zhiyou.zyl.UsersMapper.getUser --> <mapper namespace="com.zhiyou.zyl.dao.UsersDao"> <select id="selectAll" resultType="com.zhiyou.zyl.bean.Users"> select * from users </select> </mapper>
2.3测试分页
class UsersTest { static SqlSession session =null; static UsersDao ud; @BeforeAll static void setUpBeforeClass() throws Exception { String resource = "conf.xml"; //加载 mybatis 的配置文件(它也加载关联的映射文件) Reader reader = Resources.getResourceAsReader(resource); //构建 sqlSession 的工厂 SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(reader); //创建能执行映射文件中 sql 的 sqlSession session = sessionFactory.openSession(); ud=session.getMapper(UsersDao.class); } @AfterAll static void tearDownAfterClass() throws Exception { //提交 session.commit(); } @Test void testSelectAll() { int pageNum=1; int pageSize=2; PageHelper.startPage(pageNum, pageSize); List<Users> users=ud.selectAll(); PageInfo<Users> list = new PageInfo<Users>(users); System.out.println(list); }
2.4运行结果
PageInfo{pageNum=1, pageSize=2, size=2, startRow=1, endRow=2, total=4, pages=2, list=Page{count=true, pageNum=1, pageSize=2, startRow=0, endRow=2, total=4, pages=2, reasonable=false, pageSizeZero=false}[Users [id=1, name=张三, age=18], Users [id=2, name=李四, age=19]], prePage=0, nextPage=2, isFirstPage=true, isLastPage=false, hasPreviousPage=false, hasNextPage=true, navigatePages=8, navigateFirstPage=1, navigateLastPage=2, navigatepageNums=[1, 2]}
2.5pageInfo属性介绍:
pageNum: 当前页码
pageSize: 每页数据条数
size: 当前页数据条数
startRow/endRow: 开始/结束条数
total: 总条数
pages: 总页数
list: 结果集
prePage/nextPage: 上一页/下一页
isFirstPage/ isLastPage: 是否为第一页/最后一页
hasPreviousPage/hasNextPage: 是否有上一页/下一页
navigatePages:导航页码数
navigateFirstPage:导航第一页
navigateLastPage:导航下一页
navigatePageNums: 所有导航页