分页插件
分页插件的使用步骤
添加依赖
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>com.bijing.mybatis</groupId>
<artifactId>mybatis_dynamicSQL</artifactId>
<version>1.0-SNAPSHOT</version>
<!-- 打包方式jar-->
<packaging>jar</packaging>
<properties>
<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
</properties>
<dependencies>
<!--MyBatis核心-->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.11</version>
</dependency>
<!--MYSQL驱动-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.30</version>
</dependency>
<!-- log4j-->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
<!--junit测试-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13.2</version>
<scope>test</scope>
</dependency>
<!-- 分页查询-->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>5.3.2</version>
</dependency>
</dependencies>
<!-- 控制maven在构建过程中的相关配置-->
<build>
<!-- 构建过程中用到的插件-->
<plugins>
<!-- 具体插件,逆向工程的操作是以构建过程中的插件形式出现的-->
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.4.1</version>
<!-- 插件的依赖-->
<dependencies>
<!-- 逆向工程的核心依赖-->
<dependency>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-core</artifactId>
<version>1.4.1</version>
</dependency>
<!-- MYSQL驱动-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.16</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
</project>
配置分页插件
mybatis-config.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"https://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!-- MyBatis核心配置文件中的标签必须按照指定的顺序配置:
properties?,settings?,typeAliases?,typeHandlers?,objectFactory?,
objectWrapperFactory?,reflectorFactory?,plugins?,environments?,databaseIdProvider?,mappers?
-->
<!-- 引入properties文件,此后就可以在当前文件中使用的方式访问value-->
<properties resource="jdbc.properties">
</properties>
<settings>
<!-- 将下划线映射为驼峰-->
<setting name="mapUnderscoreToCamelCase" value="true"/>
</settings>
<!-- typeAliases:设置类型别名,即为某个具体的数据类型设置一个别名
在MyBatis的范围中,就可以使用别名来表示一个具体的类型
-->
<typeAliases>
<package name="com.bijing.mybatis.pojo"/>
</typeAliases>
<plugins>
<!-- 配置分页插件-->
<plugin interceptor="com.github.pagehelper.PageInterceptor"></plugin>
</plugins>
<!-- 配置连接数据 库的环境
default:设置默认使用的环境id
-->
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="${jdbc.driver}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</dataSource>
</environment>
</environments>
<!-- 引入mybatis的映射文件-->
<mappers>
<package name="com.bijing.mybatis.mapper"/>
</mappers>
</configuration>
分页插件的使用
package com.bijing.mybatis.testMBG;
import com.bijing.mybatis.mapper.EmpMapper;
import com.bijing.mybatis.pojo.Emp;
import com.bijing.mybatis.utils.SqlSessionUtil;
import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import org.apache.ibatis.session.SqlSession;
import org.junit.Test;
import java.util.List;
/**
* @author 毕晶
* @date 2022/10/15 21:55
*/
public class PageTest {
// PageInfo{
// pageNum=1, pageSize=4, size=4,
// startRow=1, endRow=4, total=32,
// pages=8,
//
// list=Page{count=true,pageNum=1, pageSize=4, startRow=0, endRow=4, total=32, pages=8, reasonable=false,
// pageSizeZero=false}[Emp [Hash = 32442399, empId=1, empName=a, age=null, gender=null, deptId=null,
// serialVersionUID=1], Emp [Hash = 122947457,
// empId=2, empName=aa, age=null, gender=null, deptId=null, serialVersionUID=1], Emp [Hash = 34289441, empId=3,
// empName=a, age=null, gender=null, deptId=null, serialVersionUID=1], Emp [Hash = 35212962, empId=4, empName=a,
// age=null, gender=null, deptId=null, serialVersionUID=1]],
//
// prePage=0, nextPage=2, isFirstPage=true,
// isLastPage=false, hasPreviousPage=false,
// hasNextPage=true, navigatePages=5,
// navigateFirstPage=1,navigateLastPage=5, navigatepageNums=[1, 2, 3, 4, 5]}
/*
* pageNum:当前的页码
*pageSize:每页显示的条数
* size:当前页显示的真是条数
* total:总记录数
* page:总页数
* prePage:上一页的页码
* nextPage:下一页的页码
* isFirstPage/isLastPage:是否为第一页/最后一页
* hasPreviousPage/hasNextPage:是否存在上一页/下一页
* navigatePages:导航分页的页码数
* navigatePageNums:导航分页的页码 *
* */
@Test
public void testPage() {
SqlSession sqlSession = SqlSessionUtil.getSqlSession();
EmpMapper mapper = sqlSession.getMapper(EmpMapper.class);
// 查询开始之前要开启分页查询的功能
PageHelper.startPage(1, 4);
// 查询出来的emp相关信息
List<Emp> emps = mapper.selectByExample(null);
emps.forEach(System.out::println);
// 查询出来的页码相关信息,当前第一页,每页四条数据
Page<Object> page = PageHelper.startPage(1, 4);
System.out.println(page);
// 分页查询的所有信息
PageInfo<Emp> pageInfo = new PageInfo<>(emps, 5);
System.out.println(pageInfo);
}
}
PageInfo的属性:
pageNum 当前页
pageSize 每页的数量
size 当前页的数量
orderBy 排序
startRow 当前页面第一个元素在数据库中的行号
endRow 当前页面最后一个元素在数据库中的行号
total 总记录数(在这里也就是查询到的用户总数)
pages 总页数 (这个页数也很好算,每页5条,总共有11条,需要3页才可以显示完)
list 结果集
prePage 前一页
nextPage 下一页
isFirstPage 是否为第一页
isLastPage 是否为最后一页
hasPreviousPage 是否有前一页
hasNextPage 是否有下一页
navigatePages 导航页码数
navigatepageNums 所有导航页号
navigateFirstPage 导航第一页
navigateLastPage 导航最后一页
firstPage 第一页
lastPage 最后一页