欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > IT业 > MyBatis 学习记录(七)之分页插件

MyBatis 学习记录(七)之分页插件

2025/6/27 23:16:59 来源:https://blog.csdn.net/LB_Wuyanzu/article/details/143350397  浏览:    关键词:MyBatis 学习记录(七)之分页插件

MyBatis 学习记录(七)

  • 1、分页插件使用步骤
    • a>添加依赖
    • b>配置分页插件
  • 2、分页插件的使用
    • a>在查询功能之前
    • b>在查询获取list集合之后
    • c>分页相关数据

1、分页插件使用步骤

a>添加依赖

<!-- https://mvnrepository.com/artifact/com.github.pagehelper/pagehelper -->
<dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper</artifactId><version>5.2.0</version>
</dependency>

b>配置分页插件

在MyBatis的核心配置文件中配置插件

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

2、分页插件的使用

a>在查询功能之前

在查询功能之前使用

PageHelper.startPage(int pageNum, int pageSize)

开启分页功能。

  • pageNum:当前页的页码
  • pageSize:每页显示的条数
@Testpublic void testPageHelper() {try {InputStream is = Resources.getResourceAsStream("mybatis-config.xml");SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);SqlSession sqlSession = sqlSessionFactory.openSession();EmpMapper mapper = sqlSession.getMapper(EmpMapper.class);System.out.println("\n查询功能前开启分页");PageHelper.startPage(2, 4);       //查询emp表的第2页,每页4项。List<Emp> emps = mapper.selectByExample(null);emps.forEach(emp -> System.out.println(emp));//输出只展示了4条结果,对应第4 5 6 7项} catch (IOException e) {e.printStackTrace();}}

b>在查询获取list集合之后

在查询获取list集合之后,使用

PageInfo<T> pageInfo = new PageInfo<>(List<T> list, int navigatePages)

来获取分页相关数据。

  • list:分页之后的数据
  • navigatePages:导航分页的页码数
    @Testpublic void testPageHelper() {try {InputStream is = Resources.getResourceAsStream("mybatis-config.xml");SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);SqlSession sqlSession = sqlSessionFactory.openSession();EmpMapper mapper = sqlSession.getMapper(EmpMapper.class);System.out.println("\n查询功能前开启分页");PageHelper.startPage(8, 4); //当前查询第8页,每页4项List<Emp> emps = mapper.selectByExample(null);emps.forEach(emp -> System.out.println(emp));System.out.println("\n");PageInfo<Emp> pages = new PageInfo<>(emps, 5);//导航分页的页数是5System.out.println("PageInfo----->" + pages);} catch (IOException e) {e.printStackTrace();}}

c>分页相关数据

这是分页之后的PageInfo信息,里面记录了当前页面的各种信息,可以用来编写分页导航等功能。

PageInfo{
pageNum=8, pageSize=4, size=2, startRow=29, endRow=30, total=30, pages=8, //当前页面显示的是最后两条数据,一共30条数据,展示的是第29 30条数据list=Page{count=true, pageNum=8, pageSize=4, startRow=28, endRow=32, total=30,
pages=8, reasonable=false, pageSizeZero=false}, //pages=8总共8页数据,pageNum=8当前是第8页。prePage=7, nextPage=0, isFirstPage=false, isLastPage=true, hasPreviousPage=true,
hasNextPage=false, navigatePages=5, navigateFirstPage=4, navigateLastPage=8,
navigatepageNums=[4, 5, 6, 7, 8]
//isFirstPage=false, isLastPage=true, hasPreviousPage=true,hasNextPage=false,目前显示的这一页不是第一页,是最后一页,存在上一页,但是不存在下一页。
//navigatepageNums=[4, 5, 6, 7, 8],当前分页导航的页码为4 5 6 7 8,当前在第八页。
//如果当前在第4页则展示位2 3 4 5 6,保持4在中间。由于第8页是最后一页,所以没办法把第8页展示到中间
}
}

pageNum:当前页的页码
pageSize:每页显示的条数
size:当前页显示的真实条数
total:总记录数
pages:总页数
prePage:上一页的页码
nextPage:下一页的页码
isFirstPage/isLastPage:是否为第一页/最后一页
hasPreviousPage/hasNextPage:是否存在上一页/下一页
navigatePages:导航分页的页码数
navigatepageNums:导航分页的页码,[4, 5, 6, 7, 8]

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词