文章目录
-
- 直接使用mysql的limit进行分页
- 插件Mybatis-PageHelper(拦截器原理)
- 在service中对list进行拆分
- MP官方插件
- 在一个项目中使用数据库进行查询需要使用的几种依赖
直接使用mysql的limit进行分页 前端会传来数据
page
,pageSize
表示第
page
页显示pageSize
条数据因为我们是直接使用sql语句的,所以我们需要使参数满足limit语法
所以以下进行一定的计算
page=(page-1)*pageSize
然后在我们查询sql的最后加上limit语句即可
select ......limit #{page},#{pageSize}
插件Mybatis-PageHelper(拦截器原理) 需要依赖
com.github.pagehelper
pagehelper
5.1.2
另外如果是使用的springboot的话,可以引入这个依赖代替上面的。该依赖会自动加入mybatis的依赖
com.github.pagehelper
pagehelper-spring-boot-starter
1.2.10
该插件可以先让我们在
dao
层查询出列表后,过滤后再进行分页第一步:设置分页
//注意这里的page不需要进行计算,直接使用前端传过来的数据
PageHelper.startPage(page,pageSize);
第二步:从
dao
层获取list
列表数据并自行过滤List list=userDao.getUserByAge(int
age);
......
第三步:分页封装
PageInfo pageInfo=new PageInfo<>(list);
之后,
pageInfo
里面的属性就可以供我们使用了。具体可以使用的数据如下//当前页
private int pageNum;
//每页的数量
private int pageSize;
//当前页的数量
private int size;
//当前页面第一个元素在数据库中的行号
private int startRow;
//当前页面最后一个元素在数据库中的行号
private int endRow;
//总记录数
private long total;
//总页数
private int pages;
//结果集
private List list;
//前一页
private int prePage;
//下一页
private int nextPage;
//是否为第一页
private boolean isFirstPage = false;
//是否为最后一页
private boolean isLastPage = false;
//是否有前一页
private boolean hasPreviousPage = false;
//是否有下一页
private boolean hasNextPage = false;
//导航页码数
private int navigatePages;
//所有导航页号
private int[] navigatepageNums;
//导航条上的第一页
private int navigateFirstPage;
//导航条上的最后一页
private int navigateLastPage;
在service中对list进行拆分 使用
list
的api
进行分页int size = list.size();
if (size % pageSize!= 0){
size = size / 10 + 1;
if(page == size){
list = list.subList((page - 1) * pageSize,list.size());
}else {
list = list.subList((page - 1) * pageSize,page * pageSize);
}
map.put("pages",size);
map.put("current",page);
}else {
list = list.subList((page - 1) * pageSize,page * pageSize);
map.put("current",page);
map.put("pages",size);
}
MP官方插件 首先需要导入
mybatis-plus
的依赖
com.baomidou
mybatis-plus-generator
3.4.1
在config包下添加一个MP的拦截器
@Configuration
public class MybatisPlusConfig {
/*
* 分页插件,自动识别数据库类型 多租户,请参考官网【插件扩展】
*/
@Bean
public PaginationInterceptor paginationInterceptor() {
return new PaginationInterceptor();
}
}
使用
MP
封装的查询API
第一步:创建一个Page对象(不用进行计算,继续使用前端传过来的数据)
IPage userPage = new Page<>(page, pageSize);
//参数一是当前页,参数二是每页个数
第二步:调用官方
API
userPage = userMapper.selectPage(userPage, null);
第三步:获取
page
中的数据List list = userPage.getRecords();
在一个项目中使用数据库进行查询需要使用的几种依赖 数据库驱动
mysql
mysql-connector-java
8.0.15
数据库连接池
com.alibaba
druid-spring-boot-starter
1.1.10
【java项目工具|后端中使用分页的几种方法(建议收藏)】maybatis和分页插件
com.github.pagehelper
pagehelper-spring-boot-starter
1.2.10
推荐阅读
- 通用功能|windows上mysql安装
- 企业级实战|Docker Redis哨兵、集群部署详解
- redis|Redis集群之哨兵模式
- Redis|Redis哨兵集群部署教程—从零开始(一主二从三哨兵)
- Mybatis|Mybatis XML动态SQL
- mysql|MySQL 高级(进阶) SQL 语句 (一)
- 小笔记|MySQL造成更新死锁及插入死锁的几种常见原因
- mysql|MYSQL的JDBC编程
- mysql|JDBC 数据库编程