这玩意是为了帮助分页的
分页就是数据量太大了,放在一页里太长了,分为好多页
用户会发送请求,携带页码pageNum给服务器
每页显示的记录条数:pageSize,例如百度默认就是每页展示10条记录
实际上每一次在进行分页请求发送的时候,都是要发送两个数据的。
前端提交表格的话,数据格式:
uri?pageNum=1&pageSize=10
那么关于mysql当中的分页sql应该如何编写?limit关键字。
limit语法格式:
limit 开始下标, 显示的记录条数
limit startIndex, pageSize
select * from t_car limit 0, 3;
select * from t_car limit 2;
等效于select * from t_car limit 0, 2;
mysql的limit后面两个数字:
startIndex
(起始下标,下标从0开始)pageSize
(每页显示的记录条数)pageNum
,还有每页显示的记录条数pageSize
,第一个数字可以动态获取嘛?startIndex = (pageNum - 1)*pageSize
假设每页显示三条记录
第一页:limit 0, 3
(0,1,2)
第二页:limit 3, 3
(3,4,5)
第三页:limit 6, 3
(6,7,8)
第四页:limit 9, 3
(9,10,11)
…
假设每页显示pageSize条记录:
第pageNum页:limit (pageNum - 1)*pageSize, pageSize
//CarMapper.java
List<Car> selectAll(@Param("startIndex")int startIndex,@Param("pageSize")int pageSize);
<select id="selectAll" resultType="Car">
select
*
from
t_car
limit
#{startIndex},#{pageSize}
select>
//test
@Test
public void test(){
int pageSize = 3;
int pageNum = 2;
SqlSession sqlSession = SqlSessionUtil.openSession();
CarMapper mapper = sqlSession.getMapper(CarMapper.class);
List<Car> cars = mapper.selectAll((pageNum - 1) * pageSize, pageSize);
cars.forEach(car -> System.out.println(car));
sqlSession.close();
}
老规矩,pom文件插依赖
<dependency>
<groupId>com.github.pagehelpergroupId>
<artifactId>pagehelperartifactId>
<version>5.3.1version>
dependency>
mybatis-config核心配置文件配置插件
注意plugins插入的位置顺序
<plugins>
<plugin interceptor="com.github.pagehelper.PageInterceptor">plugin>
plugins>
代码调试
//CarMapper.java
List<Car> selectAll2();
//CarMapper.xml
<select id="selectAll2" resultType="Car">
select * from t_car
select>
//test文件
@Test
public void test2(){
SqlSession sqlSession = SqlSessionUtil.openSession();
CarMapper mapper = sqlSession.getMapper(CarMapper.class);
int pageSize = 3;
int pageNum = 2;
PageHelper.startPage(pageNum,pageSize);
List<Car> cars = mapper.selectAll2();
cars.forEach(car -> System.out.println(car));
sqlSession.close();
}
封装分页信息对象new PageInfo()
PageInfo对象是PageHelper插件提供的,用来封装分页相关信息的对象
在里面还能获取导很多其他的数据,比如说上一页,下一页什么的
@Test
public void test2(){
SqlSession sqlSession = SqlSessionUtil.openSession();
CarMapper mapper = sqlSession.getMapper(CarMapper.class);
int pageSize = 3;
int pageNum = 2;
PageHelper.startPage(pageNum,pageSize);
List<Car> cars = mapper.selectAll2();
PageInfo<Car> carPageInfo = new PageInfo<>(cars, 3);
System.out.println(carPageInfo);
sqlSession.close();
}