Mybatis分页插件——PageHelper

一、定义


        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]}

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

钟月一人

码字整理不易,感谢各位大佬支持

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值