文章目录
- MyBatis分页插件的使用
- 前置知识
- 分页插件的使用
MyBatis分页插件的使用
前置知识
-
MyBatis基础用法。推荐阅读:MyBatis的基本使用
-
MySQL分页查询:
知道分页查询的规律,同时知道
limit index pageSize
的使用-
index:当前页的起始索引
-
pageSize:每页页记录的显示条数
-
pageNum:当前页的页码
-
count:表的总记录数
-
totalPage:分页查询的总页数
前端会传递pageSize和pageNum两个参数,通过这两个参数要知道如何计算出index的值;count这个参数可以从数据库中查询得到,然后通过count和pageSize求出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=(pageNum−1)∗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)控制
-
分页插件的使用
由于分页查询比较繁琐,代码逻辑很简单,但是要写很多判断,所以为了简化开发就可以直接使用分页查询插件。
浅析分页插件的原理:分页插件内置了一个拦截器,当我们将分页插件引入项目中后,一旦调用查询方法就会触发分页插件中的拦截器,拦截器会会将自动将查询结果进行分页展示
演示:
-
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:测试
pageInfo中的数据有:
CRUD (创建:Create,读取:Read,更新:Update,删除:Delete)
IDUS(增:Insert,删:Delete,改:Update,查:Select)