寻找写代码感觉(十一)之使用PageHelper实现后端分页
一、PageHelper
是什么?
是一个插件,可以控制接口显示数据,其原理就是Mybatis
拦截器,拦截到SQL后,增加limit关键字,实现对查询结果的控制。
二、如何使用
1、在pom
中加上依赖
<!-- pagehelper 插件-->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.2.13</version>
</dependency>
2、修改Service
层中代码
使用PageHelper
进行分页设置,示例代码如下:
package com.rongrong.wiki.service;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.rongrong.wiki.domain.EBook;
import com.rongrong.wiki.domain.EBookExample;
import com.rongrong.wiki.mapper.EBookMapper;
import com.rongrong.wiki.req.EBookReq;
import com.rongrong.wiki.resp.EBookResp;
import org.springframework.stereotype.Service;
import org.springframework.util.ObjectUtils;
import javax.annotation.Resource;
import java.util.List;
import static com.rongrong.wiki.util.CopyUtil.copyList;
/**
* @author rongrong
* @version 1.0
* @description
* @date 2021/10/13 23:09
*/
@Service
public class EBookService {
@Resource
private EBookMapper eBookMapper;
public List<EBookResp> list(EBookReq eBookReq) {
EBookExample eBookExample = new EBookExample();
//此处代码的意思相当于,搞了一个Sql的where条件
EBookExample.Criteria criteria = eBookExample.createCriteria();
//划波浪线为不推荐使用,这里我们去看源代码做个替换即可
if (!ObjectUtils.isEmpty(eBookReq.getName())) {
criteria.andNameLike("%" + eBookReq.getName() + "%");
}
//控制请求后,每页显显示3条数据
PageHelper.startPage(1,3);
List<EBook> eBookList = eBookMapper.selectByExample(eBookExample);
PageInfo<EBook> pageInfo = new PageInfo(eBookList);
System.out.println(pageInfo.getTotal());
System.out.println(pageInfo.getPages());
//List<EBookResp> eBookRespList = new ArrayList<>();
//for (EBook eBook: eBookList) {
// //EBookResp eBookResp = new EBookResp();
// ////spring boot 自带的BeanUtils完成对象的拷贝
// //BeanUtils.copyProperties(eBook, eBookResp);
// //eBookResp.setId(12345L);
// //单体复制
// EBookResp copy = copy(eBook, EBookResp.class);
// eBookRespList.add(copy);
//}
//列表复制
List<EBookResp> respList = copyList(eBookList, EBookResp.class);
return respList;
}
}
3、修改后调用显示
控制台显示:
前端页面显示:
个人感觉还是比较简单的,而且使用方便。
优秀不够,你是否无可替代
软件测试交流QQ群:721256703,期待你的加入!!
欢迎关注我的微信公众号:软件测试君