Mybatis分页插件PageHelper
2023-12-14 21:50:45
- PageHelper是什么?
是MyBatis提供的分页插件,可以支持MySQL、Oracle等六种数据库。
集成方式如下:
1 引入依赖
<!-- https://mvnrepository.com/artifact/com.github.pagehelper/pagehelper -->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>5.3.2</version>
</dependency>
2 在核心配置文件中配置分页插件
<plugins>
<!-- 设置分页插件 -->
<plugin interceptor="com.github.pagehelper.PageInterceptor"></plugin>
</plugins>
3 功能测试
package com.giser.mybatis.pagehelper;
import com.giser.mybatis.pagehelper.mapper.EmpMapper;
import com.giser.mybatis.pagehelper.pojo.Emp;
import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Test;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;
/**
* @author giserDev
* @description
* @date 2023-12-07 23:41:44
*/
public class EmpMapperTest {
/**
* 分页插件的使用:
* a>在查询功能之前使用PageHelper.startPage(int pageNum, int pageSize)开启分页功能
* pageNum:当前页的页码
* pageSize:每页显示的条数
* b>在查询获取list集合之后,使用
* PageInfo<T> pageInfo = new PageInfo<>(List<T> list, int navigatePages)获取分页相关数据
* list:分页之后的数据
* navigatePages:导航分页的页码数
* c>分页相关数据
* PageInfo{
* pageNum=8, pageSize=4, size=2, startRow=29, endRow=30, total=30, pages=8,
* list=Page{count=true, pageNum=8, pageSize=4, startRow=28, endRow=32, total=30,
* pages=8, reasonable=false, pageSizeZero=false},
* prePage=7, nextPage=0, isFirstPage=false, isLastPage=true, hasPreviousPage=true,
* hasNextPage=false, navigatePages=5, navigateFirstPage4, navigateLastPage8,
* navigatepageNums=[4, 5, 6, 7, 8]
* }
* 常用数据:
* pageNum:当前页的页码
* pageSize:每页显示的条数
* size:当前页显示的真实条数
* total:总记录数
* pages:总页数
* prePage:上一页的页码
* nextPage:下一页的页码
*
* <!-- https://mvnrepository.com/artifact/com.github.pagehelper/pagehelper -->
* <dependency>
* <groupId>com.github.pagehelper</groupId>
* <artifactId>pagehelper</artifactId>
* <version>5.2.0</version>
* </dependency>
* <plugins>
* <!--设置分页插件-->
* <plugin interceptor="com.github.pagehelper.PageInterceptor"></plugin>
* </plugins>
*
* isFirstPage/isLastPage:是否为第一页/最后一页
* hasPreviousPage/hasNextPage:是否存在上一页/下一页
* navigatePages:导航分页的页码数
* navigatepageNums:导航分页的页码,[1,2,3,4,5]
*
*/
@Test
public void testPageHelper(){
try {
InputStream is = Resources.getResourceAsStream("mybatis-config.xml");
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);
SqlSession sqlSession = sqlSessionFactory.openSession(true);
EmpMapper empMapper = sqlSession.getMapper(EmpMapper.class);
int pageNum = 1;
int pageSize = 3;
// 开启分页
PageHelper.startPage(pageNum, pageSize);
List<Emp> empList = empMapper.queryEmpList();
// 拦截器处理后,实际上会判断是否存在localPage,即调用startPage()方法就会有,存在则封装为Page对象返回
if (empList instanceof Page<Emp>){
Page<Emp> empPage = (Page<Emp>) empList;
System.out.println(empPage);
}
// 也可以自行封装,此时可获取更多分页相关数据
PageInfo<Emp> pageInfo = new PageInfo<>(empList, 5);
System.out.println(pageInfo);
} catch (IOException e) {
throw new RuntimeException(e);
}
}
}
文章来源:https://blog.csdn.net/SUNBOYmxbsH/article/details/134916325
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!