【MyBatis】MyBatis分页插件的使用

文章介绍了MyBatis分页插件的使用,包括分页查询的基础知识,如index和pageSize的计算,以及totalPage的求解。文章强调了分页插件能简化繁琐的分页查询代码,通过PageInterceptor实现自动分页。在Maven工程中引入PageHelper插件,并展示了配置和测试步骤,最后通过PageInfo对象获取和展示分页数据。
摘要由CSDN通过智能技术生成

MyBatis分页插件的使用

前置知识

  • MyBatis基础用法。推荐阅读:MyBatis的基本使用

  • MySQL分页查询:

    知道分页查询的规律,同时知道limit index pageSize的使用

    • index:当前页的起始索引

    • pageSize:每页页记录的显示条数

    • pageNum:当前页的页码

    • count:表的总记录数

    • totalPage:分页查询的总页数

      前端会传递pageSizepageNum两个参数,通过这两个参数要知道如何计算出index的值;count这个参数可以从数据库中查询得到,然后通过countpageSize求出totalPage

      公式

      • i n d e x = ( p a g e N u m − 1 ) ∗ p a g e S i z e index = (pageNum-1)*pageSize index=(pageNum1)pageSize
      • t o t a l p a g e = ( c o u n t % p a g e S i z e   ! =   0 )   ?   ( c o u n t   /   p a g e S i z e + 1 )   :   ( c o u n t / p a g e S i z e ) totalpage = (count\%pageSize~!=~0)~?~(count~/~pageSize+1)~:~(count/pageSize) totalpage=(count%pageSize != 0) ? (count / pageSize+1) : (count/pageSize)

    首页 上一页 2 3 4 5 6下一页 尾页

    其中2,3,4,5,6的数量由导航分页展示数navigatePages(此时它取值5)控制

分页插件的使用

由于分页查询比较繁琐,代码逻辑很简单,但是要写很多判断,所以为了简化开发就可以直接使用分页查询插件。

浅析分页插件的原理:分页插件内置了一个拦截器,当我们将分页插件引入项目中后,一旦调用查询方法就会触发分页插件中的拦截器,拦截器会会将自动将查询结果进行分页展示

演示

创建Maven工程
导入依赖
编写MyBatis配置文件
测试
  • Step1:创建Maven工程

    略……

  • Step2:导入依赖

    pom.xml:

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
    
        <groupId>org.example</groupId>
        <artifactId>day04_mybatis3</artifactId>
        <version>1.0-SNAPSHOT</version>
    
        <properties>
            <maven.compiler.source>8</maven.compiler.source>
            <maven.compiler.target>8</maven.compiler.target>
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        </properties>
        <dependencies>
            <!--mysql-->
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>8.0.16</version>
            </dependency>
            <!--mybatis-->
            <dependency>
                <groupId>org.mybatis</groupId>
                <artifactId>mybatis</artifactId>
                <version>3.5.10</version>
            </dependency>
            <!--junit-->
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>4.13.2</version>
                <scope>test</scope>
            </dependency>
            <!--log4j-->
            <dependency>
                <groupId>log4j</groupId>
                <artifactId>log4j</artifactId>
                <version>1.2.17</version>
            </dependency>
            <!--插件依赖的jar包-->
            <dependency>
                <groupId>com.github.pagehelper</groupId>
                <artifactId>pagehelper</artifactId>
                <version>5.3.0</version>
            </dependency>
        </dependencies>
    
        <build>
            <plugins>
                <!--mybatis逆向工程的插件-->
                <plugin>
                    <groupId>org.mybatis.generator</groupId>
                    <artifactId>mybatis-generator-maven-plugin</artifactId>
                    <version>1.3.0</version>
    
                    <!-- 插件的依赖 -->
                    <dependencies>
                        <!-- 逆向工程的核心依赖 -->
                        <dependency>
                            <groupId>org.mybatis.generator</groupId>
                            <artifactId>mybatis-generator-core</artifactId>
                            <version>1.3.2</version>
                        </dependency>
                        <!-- MySQL驱动 -->
                        <dependency>
                            <groupId>mysql</groupId>
                            <artifactId>mysql-connector-java</artifactId>
                            <version>8.0.16</version>
                        </dependency>
                    </dependencies>
                </plugin>
            </plugins>
        </build>
        
    </project>
    
  • Step3:编写MyBatis配置文件

    mybatis.config:

    <plugins>
    	<!--设置分页插件-->
    	<plugin interceptor="com.github.pagehelper.PageInterceptor"></plugin>
    </plugins>
    

    注意:按照标签的顺序添加在mybatis核心配置文件中

  • Step4:编写Java代码

    import com.github.pagehelper.PageHelper;
    import com.hhxy.mapper.EmpMapper;
    import com.hhxy.pojo.Emp;
    import com.hhxy.utils.SqlSessionFactoryUtil;
    import org.apache.ibatis.session.SqlSession;
    import org.apache.ibatis.session.SqlSessionFactory;
    import org.junit.Test;
    
    import java.util.List;
    
    /**
     * 测试分页插件
     * @author ghp
     * @date 2022/9/12
     */
    public class PageTest {
        @Test
        public void pageTest(){
            //1、获取SqlSessionFactory对象
            SqlSessionFactory sqlSF = SqlSessionFactoryUtil.getSqlSF();
            //2、获取SqlSession对象
            SqlSession sqlS = sqlSF.openSession();
            //3、获取Mapper接口对象
            EmpMapper mapper = sqlS.getMapper(EmpMapper.class);
            //4、执行SQL,同时实现分页功能
            //确定分页格式(会返回一个Page对象)
            PageHelper.startPage(2,3);
    
            /*
            查看Page对象(Page对象本质是一个ArrayList集合,里面存储了部分分页相关的数据)
            System.out.println(PageHelper.startPage(2,3););
             */
    
            //查询所有
            List<Emp> emps = mapper.selectByExample(null);
            emps.forEach(System.out::println);
    
            /*
            查看PageInfo对象(该对象存储了分页相关的所有数据,但必须是执行完查询的SQL能获取所有数据)
            int navigatePages = 5;//导航分页展示数,控制分页展示列表
            PageInfo<Emp> pageInfo = new PageInfo<>(emps,navigatePages);
            System.out.println(pageInfo);
           */
    
        }
    }
    
  • Step5:测试

    image-20220912170251976

    image-20220912164626027

    image-20220912170055808

    pageInfo中的数据有:

    image-20220912170139596

CRUD (创建:Create,读取:Read,更新:Update,删除:Delete)

IDUS(增:Insert,删:Delete,改:Update,查:Select)

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

知识汲取者

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值