MyBatis分页插件PageHelper如何使用(mybatis,pagehelper,开发技术)

时间:2024-04-29 06:32:09 作者 : 石家庄SEO 分类 : 开发技术
  • TAG :

MyBatis使⽤PageHelper

1.limit分⻚

(1)概念:

①页码:pageNum(用户会发送请求,携带页码pageNum给服务器)

②每页显示的记录条数:pageSize,例如:百度默认的是每页展示10条记录

③实际上每一次在进行分页请求发送的时候,都是要发送两个数据:pageNum和pageSize给服务器

④实际上前端提交表单的数据格式应如下:uri?pageNum=1&pageSize=10,后端调用request.getParameter方法获取到对应的页码和每页显示的记录条数

(2)mysql当中的分页SQL应该怎么写?

①使用limit关键字,语法格式:limit startIndex,pageSize

②第⼀个数字:startIndex(起始下标,下标从0开始)

③第⼆个数字:pageSize(每⻚显示的记录条数)

④假设已知⻚码pageNum,还有每⻚显示的记录条数pageSize,那么第⼀个数字是可以动态的获取的:startIndex = (pageNum - 1) * pageSize

(3)标准通⽤的mysql分⻚SQL:

select*fromtableName......limit(pageNum-1)*pageSize,pageSize

(4)使用limit关键字编写代码进行分页

三兄弟之一:CarMapper接口,编写方法

packagecom.bjpowernode.mybatis.mapper;importcom.bjpowernode.mybatis.pojo.Car;importorg.apache.ibatis.annotations.Param;importjava.util.List;publicinterfaceCarMapper{/***分页查询*@paramstartIndex起始下标*@parampageSize每页显示的记录条数*@return*/List<Car>selectAllByPage(@Param("startIndex")intstartIndex,@Param("pageSize")intpageSize);}

三兄弟之二:CarMapper.xml文件,编写sql语句

<?xmlversion="1.0"encoding="UTF-8"?><!DOCTYPEmapperPUBLIC"-//mybatis.org//DTDMapper3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mappernamespace="com.bjpowernode.mybatis.mapper.CarMapper"><selectid="selectAllByPage"resultType="Car">select*fromt_carlimit#{startInde},#{pageSize}</select></mapper>

三兄弟之三:CarMappeTest类,用来编写测试类

packagecom.bjpowernode.mybatis.test;importcom.bjpowernode.mybatis.mapper.CarMapper;importcom.bjpowernode.mybatis.pojo.Car;importcom.bjpowernode.mybatis.utils.SqlSessionUtil;importorg.apache.ibatis.session.SqlSession;importorg.junit.Test;importjava.util.List;publicclassCarMapperTest{@TestpublicvoidtestSelectAllByPage(){//应该是从前端获取到页码intpageNum=2;//应该是从前端获取到每页显示的条数intpageSize=2;//起始下标intstartIndex=(pageNum-1)*pageSize;SqlSessionsqlSession=SqlSessionUtil.openSession();CarMappermapper=sqlSession.getMapper(CarMapper.class);List<Car>cars=mapper.selectAllByPage(startIndex,pageSize);cars.forEach(car->System.out.println(car));sqlSession.close();}}

执行结果:

MyBatis分页插件PageHelper如何使用

对应的是数据库表中:起始下标为2开始的后两条数据(下标从0开始)

MyBatis分页插件PageHelper如何使用

(5)其实获取数据并不难,难的是获取分⻚相关的数据⽐较难(例如:总记录条数、是否有上/下一页、分页的导航显示多少个);这些可以借助mybatis的PageHelper插件。

MyBatis分页插件PageHelper如何使用

2.PageHelper插件

使⽤PageHelper插件进⾏分⻚,更加的便捷!

第一步:pom.xml中引入依赖

<dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper</artifactId><version>5.3.1</version></dependency>

第二步:在mybatis-config.xml⽂件中配置插件

<!--mybatis分页的拦截器--><plugins><plugininterceptor="com.github.pagehelper.PageInterceptor"></plugin></plugins>

第三步:编写Java代码

三兄弟之一:CarMapper接口,编写方法

packagecom.bjpowernode.mybatis.mapper;importcom.bjpowernode.mybatis.pojo.Car;importorg.apache.ibatis.annotations.Param;importjava.util.List;publicinterfaceCarMapper{/***查询所有的Car,通过分页查询插件PageHelper完成*@return*/List<Car>selectAll();}

三兄弟之二:CarMapper.xml文件,编写sql语句

使用了分页插件PageHelper就不需要使用limit关键字了,直接正常查询即可!

<?xmlversion="1.0"encoding="UTF-8"?><!DOCTYPEmapperPUBLIC"-//mybatis.org//DTDMapper3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mappernamespace="com.bjpowernode.mybatis.mapper.CarMapper"><selectid="selectAll"resultType="Car">select*fromt_car</select></mapper>

三兄弟之三:CarMappeTest类,用来编写测试类

注:在执行DQL语句之前,开启分页功能!

调用PageHelper的startPage(pageNum,pageSize)方法:

①第一个参数是页码pageNum

②第二个参数还是每页显示的记录条数pageSize

packagecom.bjpowernode.mybatis.test;importcom.bjpowernode.mybatis.mapper.CarMapper;importcom.bjpowernode.mybatis.pojo.Car;importcom.bjpowernode.mybatis.utils.SqlSessionUtil;importcom.github.pagehelper.PageHelper;importorg.apache.ibatis.session.SqlSession;importorg.junit.Test;importjava.util.List;publicclassCarMapperTest{@TestpublicvoidtestSelectAll(){SqlSessionsqlSession=SqlSessionUtil.openSession();CarMappermapper=sqlSession.getMapper(CarMapper.class);//在执行DQL语句之前,开启分页intpageNum=2;//第二页intpageSize=3;//每页显示的条数PageHelper.startPage(pageNum,pageSize);List<Car>cars=mapper.selectAll();cars.forEach(car->System.out.println(car));sqlSession.close();}}

执行结果:实际上PageHelper是在SQL语句后面自动加上了limit关键字

MyBatis分页插件PageHelper如何使用

第2页,每页显示的条数是3,对应的数据库表中的数据就是:

MyBatis分页插件PageHelper如何使用

第四步:获取PageInfo对象

关键点:

①在查询语句之前,开启分⻚功能。

②在查询语句之后,封装PageInfo对象(PageInfo对象将来会存储到request域当中。在⻚⾯上展示)

packagecom.bjpowernode.mybatis.test;importcom.bjpowernode.mybatis.mapper.CarMapper;importcom.bjpowernode.mybatis.pojo.Car;importcom.bjpowernode.mybatis.utils.SqlSessionUtil;importcom.github.pagehelper.PageHelper;importcom.github.pagehelper.PageInfo;importorg.apache.ibatis.session.SqlSession;importorg.junit.Test;importjava.util.List;publicclassCarMapperTest{@TestpublicvoidtestSelectAll(){SqlSessionsqlSession=SqlSessionUtil.openSession();CarMappermapper=sqlSession.getMapper(CarMapper.class);//1.在执行DQL语句之前,开启分页intpageNum=1;//第一页intpageSize=3;//每页显示的条数PageHelper.startPage(pageNum,pageSize);//2.执行SQL语句List<Car>cars=mapper.selectAll();//3.执行DQL之后,封装PageInfo对象,newPageInfo对象//第二个参数就是分页导航的卡片个数PageInfo<Car>carPageInfo=newPageInfo<>(cars,3);System.out.println(carPageInfo);sqlSession.close();}}

执行结果:

列举几个常用的属性:

①pageNum-页码, pageSize-每页显示的记录, size=3, startRow-从第几条数据开始, endRow-从第几条数据结束, total-总记录条数, pages-页数,

②prePage-上一页的页码, nextPage-下一页的页码, isFirstPage-,是否是第一页 isLastPage-是否是最后一页, hasPreviousPage-有没有上一页, hasNextPage-有没有下一页

③navigatePages-导航页码, navigateFirstPage-导航第一页是几, navigateLastPage-导航最后一页是几, navigatepageNums-存在数据的导航页

MyBatis分页插件PageHelper如何使用

怎么用?

在javaweb当中,代用request.setAttribute("pageInfo",carPageInfo)方法,把数据放到request域当中;然后从request域当中取出分页的信息,在前端进行展示!

 </div> <div class="zixun-tj-product adv-bottom"></div> </div> </div> <div class="prve-next-news">
本文:MyBatis分页插件PageHelper如何使用的详细内容,希望对您有所帮助,信息来源于网络。
上一篇:Dubbo系列JDK SPI原理是什么下一篇:

7 人围观 / 0 条评论 ↓快速评论↓

(必须)

(必须,保密)

阿狸1 阿狸2 阿狸3 阿狸4 阿狸5 阿狸6 阿狸7 阿狸8 阿狸9 阿狸10 阿狸11 阿狸12 阿狸13 阿狸14 阿狸15 阿狸16 阿狸17 阿狸18