SpringBoot整合Mybatis分页插件PageHelper
程序员文章站
2022-07-15 10:26:51
...
当对后台查询的数据需要进行分页时,在数据库层面可以使用Mybatis的分页插件,使用非常方便。
PageHelper.startPage(pageNum, pageSize);
对,就这么一行简单的代码就可以实现了,但是也是要注意几个问题:
添加依赖:
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.2.5</version>
</dependency>
调用方式:
(1)Mapper接口方式的调用(推荐使用)
PageHelper,startPage(1,20);
List<User> list = userMapper.selectUser();
(2)参数方法使用
存在以下Mapper接口方法,不需要在xml处理后两个参数
public interface CountryMapper{
List<User> selectByPageNum(@Param("user") User user,@Param("pageNum") int pageNum,@Param("pageSize") int pageSize);
}
配置supportMethodArguments = true
在代码中直接调用:
List<User> list = userMapper.selectByPageNum(user,1,20);
(3)参数对象
如果pageNum和pageSize存在于User对象中,只要参数有值,也会被分页
public class User {
private Integer pageNum;
private Integer pageSize;
}
存在以下mapper接口方法,你不需要在xml处理后两个参数
public interface CountryMapper {
List<User> selectByPageNum(User user);
}
当pageNum != null && pageSize != null时,会自动分页
List<User> list = userMapper.selectByPageNum(user);
(4)ISelect接口方式,jdk6、7用法
Page<User> page = PageHelper.startPage(1,20).doSelectPage(new ISelect() {
@Override
public void doSelect(){
userMapper.selectList();
}
})
(5)jdk8 lambda用法
Page<User> page = PageHelper.startPage(1,20).doSelectPage(() -> userMapper.selectList());
也可以直接返回pageInfo
pageInfo = PageHelper.startPage.startPage(1,20).doSelectPageInfo(new ISelect() {
@Override
public void doSelect() {
userMapper.selectList();
}
})
对应的lambda用法
pageInfo = PageHelper.startPage(1,20).doSelectPageInfo(() -> userMapper.selectList());
count查询,返回一个查询语句的count数
long total = PageHelper.count(new ISelect() {
@Override
public void doSelect() {
userMapper.selectLike(user);
}
})
lambda用法
total = PageHelper.count(() -> userMapper.selectLike(user));
List手动分页
/**
* 开始分页
*
* @param list
* @param pageNum 页码
* @param pageSize 每页多少条数据
* @return
*/
public static List startPage(List list, Integer pageNum, Integer pageSize) {
if(list == null){
return null;
}
if(list.size() == 0){
return null;
}
Integer count = list.size(); //记录总数
Integer pageCount = 0; //页数
if (count % pageSize == 0) {
pageCount = count / pageSize;
} else {
pageCount = count / pageSize + 1;
}
int fromIndex = 0; //开始索引
int toIndex = 0; //结束索引
if(pageNum > pageCount){
pageNum = pageCount;
}
if (!pageNum.equals(pageCount)) {
fromIndex = (pageNum - 1) * pageSize;
toIndex = fromIndex + pageSize;
} else {
fromIndex = (pageNum - 1) * pageSize;
toIndex = count;
}
List pageList = list.subList(fromIndex, toIndex);
return pageList;
}
推荐阅读
-
Spring Boot入门系列八(SpringBoot 整合Mybatis)
-
java使用插件pagehelper在mybatis中实现分页查询
-
SpringBoot系列-整合Mybatis(XML配置方式)
-
SpringBoot系列-整合Mybatis(注解方式)
-
SpringBoot无废话入门04:MyBatis整合
-
SpringBoot项目中分页插件PageHelper无效的问题及解决方法
-
springboot+springmvc+mybatis项目整合
-
SpringBoot 整合jdbc和mybatis
-
SpringBoot整合mybatis访问时报错Invalid bound statement (not found)
-
MyBatis基于pagehelper实现分页原理及代码实例