1 依赖引入
<!-- spring-boot对mybatis的支持 -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.3</version>
</dependency>
<!-- mybatis分页插件 -->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.3.0</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
2 配置文件
# 分页插件
pagehelper:
helperDialect: mysql
reasonable: true
supportMethodsArguments: true
params: count=countSql
3 代码
3.1 封装请求参数
@Data
public class PageRequest {
/**
* 当前页码
*/
private int pageNum;
/**
* 每页数量
*/
private int pageSize;
}
3.2 封装分页结果
@Data
public class PageResult {
/**
* 当前页码
*/
private int pageNum;
/**
* 每页数量
*/
private int pageSize;
/**
* 记录总数
*/
private long totalSize;
/**
* 页码总数
*/
private long totalPages;
/**
* 数据模型
*/
private List<?> content;
}
3.3 分页工具类
public class PageUtil {
/**
* 分页工具类
* @param pageInfo
* @param pageRequest
* @return
*/
public static PageResult getPageResult(PageInfo<?> pageInfo, PageRequest pageRequest) {
PageResult result = new PageResult();
result.setPageNum(pageRequest.getPageNum());
result.setPageSize(pageRequest.getPageSize());
result.setTotalSize(pageInfo.getTotal());
result.setTotalPages(pageInfo.getPages());
result.setContent(pageInfo.getList());
return result;
}
}
3.4 Mapper层代码
public interface UserMapper{
@Select("select * from tb_user")
List<User> selectByPage();
}
3.5 Service层代码
public interface PageService{
PageResult findByPage(PageRequest pageRequest);
}
3.6 ServiceImpl实现
public class PageServiceImpl implements PageService{
@Autowired
private UserMapper userMapper;
@Override
public PageResult findByPage(PageRequest pageRequest) {
//参数校验
int pageNum = pageRequest.getPageNum();
if (pageNum < 0) {
pageNum = 0;
}
//参数校验
int pageSize = pageRequest.getPageSize();
if (pageSize < 0) {
pageSize = 10;
}
//分页插件进行分页
PageHelper.startPage(pageNum, pageSize);
List<User> userList = userMapper.selectByPage();
return PageUtil.getPageResult(new PageInfo<User>(userList), pageRequest);
}
}