Mybatis使用PageHelper


前言

页码:pageNum(用户会发送请求,携带页码pageNum给服务器)
每页显示的记录条数:pageSize,例如百度默认就是每页展示10条记录。
实际上每一次再进行分页请求发送的时候,都是要发送两个数据的。


一、limit关键字

limit语法格式:

limit 开始下标,显示的记录条数
limit startIndex,pageSize

select * from t_car limit 0,2;
select * from t_car limit 2;
这两条语句是等效的

mysql当中起始行的下标是从0开始。第一条记录的下标是0
举例:
总表
在这里插入图片描述

select * from t_car limit 0,3;
在这里插入图片描述

select * from t_car limit 3,2;
在这里插入图片描述

假设每页显示4条记录:
第一页:limit 0,4
第二页:limit 4,4
第三页:limit 8,4
……
第i页:limit 4(i-1),4
每页显示的记录条数 pageSize = 3;
页码:pageNum = 10;
startIndex = (pageNum-1)*pageSize
limit startIndex ,pageSize

二、PageHelper插件

2.1.引入依赖

<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>5.3.1</version>
</dependency>

2.2.mybatis-config.xml配置插件

<plugins>
<plugin interceptor="com.github.pagehelper.PageInterceptor"></plugin>
</plugins>

2.3.测试

接口:

    /**
     * 查询所有的cat,通过分页查询插件PageHelper完成
     * @return
     */
    List<Car> selectAll();

mapper.xml文件:

 <select id="selectAll" resultType="car">
     select * from t_car
 </select>

测试程序:
一定一定要注意:在执行DQL语句之前,开启分页功能
PageHelper.startPage(pageNum,pageSize);

    @Test
    public void testPageHelper() throws IOException {
        SqlSession sqlsession  = SqlSessionUtil.openSession();
        CarMapper carMapper = sqlsession.getMapper(CarMapper.class);

        //一定一定要注意:在执行DQL语句之前,开启分页功能
        int pageNum = 2;
        int pageSize = 3;
        PageHelper.startPage(pageNum,pageSize);
        List<Car> cars = carMapper.selectAll();
        cars.forEach(car -> {
            System.out.println(car);
        });
        sqlsession.close();
    }

运行结果
在这里插入图片描述

在这里插入图片描述
分页查询执行成功!

三、获取PageInfo

    封装分页信息对象 new PageInfo()
    PageInfo对象是PageHelper插件提供的,用来封装分页相关的信息的对象
    @Test
    public void testPageHelper() throws IOException {
        SqlSession sqlsession  = SqlSessionUtil.openSession();
        CarMapper carMapper = sqlsession.getMapper(CarMapper.class);
        //一定一定要注意:在执行DQL语句之前,开启分页功能
        int pageNum = 2;
        int pageSize = 3;
        PageHelper.startPage(pageNum,pageSize);
        List<Car> cars = carMapper.selectAll();
//        cars.forEach(car -> {
//            System.out.println(car);
//        });
        //封装分页信息对象 new PageInfo()
        //PageInfo对象是PageHelper插件提供的,用来封装分页相关的信息的对象
        PageInfo<Car> carPageInfo = new PageInfo<>(cars, 3);
        System.out.println(carPageInfo);
        sqlsession.close();
    }

执行结果:
在这里插入图片描述

PageInfo{
pageNum=2, 页码
pageSize=3, 每页显示几条记录
size=3,
startRow=4, 整个mysql数据库当中从第几条记录开始
endRow=6, 最后那条记录
total=11, 总记录条数
pages=4, 页数
list=Page{count=true, pageNum=2, pageSize=3, startRow=3, endRow=6, total=11, pages=4, reasonable=false, pageSizeZero=false}

prePage=1, 上一页的页码
nextPage=3, 下一页的页码
isFirstPage=false, 是否是第一页
isLastPage=false, 是否是最后一页
hasPreviousPage=true, 有没有上一页
hasNextPage=true, 有没有下一页
navigatePages=3, 导航栏的页数
navigateFirstPage=1, 导航栏第一页的页数是1
navigateLastPage=3, 导航栏最后一页的页数是3
navigatepageNums=[1, 2, 3]} 导航的页数

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值