一、定义
PageHelper用在mybatis插件里面,可以自动的为最近的sql语句进行分页查询,提供分页的页码size和每页数量num,在查询过程中hi自动的拼接limit关键字,不用再改写sql语句了
在PageHelper.startPage(); 在启动查询 List 数据的查询之前时,会对最近的一个查询进行起作用,但是对于间隔的查询返回 List的数据,将不会有任何影响
二、快速入门
第⼀步:引⼊依赖
pom.xml
<!-- https://mvnrepository.com/artifact/com.github.pagehelper/pagehelper --> <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper</artifactId> <version>5.3.3</version> </dependency>
第⼆步:在mybatis-config.xml⽂件中配置插件
typeAliases标签下⾯进⾏配置:
mybatis-config.xml
<configuration> <properties resource="jdbc.properties"></properties> <plugins> <plugin interceptor="com.github.pagehelper.PageInterceptor"></plugin> </plugins>
第三步:编写Java代码
CarMapper接⼝
List<Car> queryCarList();
CarMapper.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.rocky.mybatis.mapper.CarMapper">
<select id="queryCarList" resultType="com.rocky.mybatis.pojo.Car">
<!--使用pageHelper不要使用 ;-->
select * from t_car
</select>
</mapper>
-
关键点:
-
在查询语句之前开启分⻚功能。
-
在查询语句之后封装PageInfo对象。(PageInfo对象将来会存储到request域当中。在⻚⾯上展 示。)
-
PageTest.testPageHelper
@Test
public void queryPage() throws IOException {
SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
SqlSessionFactory build = sqlSessionFactoryBuilder.build(Resources.getResourceAsStream("mybatis-config.xml"));
SqlSession sqlSession = build.openSession(true);
CarMapper mapper = sqlSession.getMapper(CarMapper.class);
//开启分页
int pageNum=2;
int pageSize=4;
PageHelper.startPage(pageNum,pageSize);
// 执⾏查询语句
List<Car> cars = mapper.queryCarList();
cars.forEach(new Consumer<Car>() {
@Override
public void accept(Car car) {
System.out.println(car);
}
});
// 获取分⻚信息对象
PageInfo<Car> pageInfo = new PageInfo<>(cars, 5);
System.out.println(pageInfo);
sqlSession.close();
}
执行结果如下:
PageInfo{pageNum=2, pageSize=4, size=4, startRow=5, endRow=8, total=11, pages=3, list=Page{count=true, pageNum=2, pageSize=4, startRow=4, endRow=8, total=11, pages=3, reasonable=false, pageSizeZero=false}[Car(id=6, carnum=null, brand=奔驰E, guideprice=null, producetime=null, cartype=null), Car(id=7, carnum=null, brand=奔驰E, guideprice=null, producetime=null, cartype=null), Car(id=8, carnum=null, brand=奔驰E, guideprice=null, producetime=null, cartype=null), Car(id=9, carnum=null, brand=奔驰E, guideprice=null, producetime=null, cartype=null)], prePage=1, nextPage=3, isFirstPage=false, isLastPage=false, hasPreviousPage=true, hasNextPage=true, navigatePages=5, navigateFirstPage=1, navigateLastPage=3, navigatepageNums=[1, 2, 3]}