前言
记一篇关于Spring Cloud框架分页的感想
一、分页怎么做?
百度上搜索spring分页会有一堆的文章教会你分页怎么做?然而真正的企业中不会像那样new pageHelper();掉方法传入参数。因为那样会有大量的分页代码在你的业务层,或者在你的mapper层。
同事突然告诉我分页不能用了,让我看看,一调试果然,参数进来了但是没有分页。很尬!
下面就代码说说实际上分页怎么去做!
二、使用步骤
1.引入库
Spring整合:
导入pom.xml
<!-- https://mvnrepository.com/artifact/com.github.pagehelper/pagehelper -->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>5.1.2</version>
</dependency>
<!--分页插件-->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>最新版本</version>
</dependency>
配置项目application.yml文件
#bybatis分页插件配置
pagehelper:
helper-dialect: mysql #数据库
reasonable: true
support-methods-arguments: true
params: count=countSql
很多的文章都会告诉你怎么写怎么写比如:
service层
@Override
public ResponseResult selectAllStudent(Integer pageNum, Integer pageSize) {
Map<String,Object> map = new HashMap<>();
PageHelper.startPage(pageNum,pageSize);
List<Student> students = studentMapper.selectAllStudents();
PageInfo pageInfo = new PageInfo(students);
long total = pageInfo.getTotal();
map.put("result",pageInfo);
map.put("count",total);
return ResponseResultUtil.success(map);
}
但是·············
2.继承DTO实现分页
若要进行分页查询,则用封装的请求参数DTO类(ListDTO)继承:BaseListDTO类,即可继承该类中的分页属性:pageSize 和pageNum
这样在去数据库以ListDTO 类作为parameterType进行数据查询时,会自动将pageSize和pageNum两个参数拼到sql语句的最后:limit …
示例:(ListDTO 继承 BaseListDTO)
public class ListDTO extends BaseListDTO {
}
BaseListDTO类代码:
public class BaseListDTO implements Serializable
{
private static final long serialVersionUID = -1L;
/** 分页页码 */
private Integer pageNum;
/** 每页条数 */
private Integer pageSize;
/** 模糊查询 字符串 */
private String searchStr;
/** 开始时间字符串 */
private String start;
/** 结束时间字符串 */
private String end;
/** 如果有分页参数则进行分页 如果没有这不进行分页 */
public void startPage() {
if (hasPage()) {
PageHelper.startPage(this.getPageNum(), this.getPageSize());
}
}
/**
* 判断是否需要分页
*
* @return
*/
public boolean hasPage() {
// 如果缺少一个参数 都不能进行分页返回false
if (this.pageNum == null || this.pageSize == null) {
return false;
}
return true;
}