• 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.pagehelpergroupId>
    <artifactId>pagehelperartifactId>
    <version>5.3.1version>
    dependency>
    
    • 1
    • 2
    • 3
    • 4
    • 5

    2.2.mybatis-config.xml配置插件

    <plugins>
    <plugin interceptor="com.github.pagehelper.PageInterceptor">plugin>
    plugins>
    
    
    • 1
    • 2
    • 3
    • 4

    2.3.测试

    接口:

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

    mapper.xml文件:

     <select id="selectAll" resultType="car">
         select * from t_car
     select>
    
    • 1
    • 2
    • 3

    测试程序:
    一定一定要注意:在执行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();
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

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

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

    三、获取PageInfo

        封装分页信息对象 new PageInfo()
        PageInfo对象是PageHelper插件提供的,用来封装分页相关的信息的对象
    
    • 1
    • 2
        @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();
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

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

    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]} 导航的页数

  • 相关阅读:
    手把手教你uniapp接入聊天IM即时通讯功能-源码分享
    分析服务用多维度、多场景的用户分层,带您深度玩转精细化游戏运营
    leetcode算法题--机器人的运动范围
    Python实现疫苗接种数据库管理——毕业设计经典案例
    20240301-2-ZooKeeper面试题(二)
    MYSQL索引查询问题质疑
    vue.draggable拖动插件的使用
    IDEA最全图标详解
    PHP array_chunk()函数
    MLAgents (0) Unity 安装及运行
  • 原文地址:https://blog.csdn.net/qq_42338744/article/details/127710103