一、Spring Boot 使用PageHelper 实现分页
1.引入依赖
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.2.12</version>
</dependency>
2.在application.yml中做如下配置
pagehelper:
helper-dialect: mysql
reasonable: true
support-methods-arguments: true
params: count=countSql
3.代码中使用
3.1 在Vo包下新建一个PageVo类,用于封装分页返回的数据
@Data
public class PageVO<T> {
private long total;
private List<T> rows = new ArrayList<>();
public PageVO(long total, List<T> data) {
this.total = total;
this.rows = data;
}
}
3.2 在response包新建一个ResponseBean 类,用于返回给前端数据
@Data
public class ResponseBean<T> {
private boolean success;
private T data;
public static <T> ResponseBean<T> success(T data) {
ResponseBean<T> responseBean = new ResponseBean<>();
responseBean.setSuccess(true);
responseBean.setData(data);
return responseBean;
}
public static <T> ResponseBean<T> error(T errorData) {
ResponseBean<T> responseBean = new ResponseBean<>();
responseBean.setSuccess(false);
responseBean.setData(errorData);
return responseBean;
}
public static <T> ResponseBean<T> success() {
ResponseBean<T> responseBean = new ResponseBean<>();
responseBean.setSuccess(true);
return responseBean;
}
}
3.3 编写Controller 类
@GetMapping("/findLoginLogList")
public ResponseBean findLoginLogList(
@RequestParam(value = "pageNum", defaultValue = "1") Integer pageNum,
@RequestParam(value = "pageSize") Integer pageSize,
LoginLogVO loginLogVO) {
PageVO<LoginLogVO> loginLogList = loginLogService.findLoginLogList(pageNum, pageSize, loginLogVO);
return ResponseBean.success(loginLogList);
}
3.4 Service 接口
PageVO<LoginLogVO> findLoginLogList(Integer pageNum, Integer pageSize, LoginLogVO loginLogVO);
3.5 ServiceImpl 类
@Autowired
private LoginLogMapper loginLogMapper;
@Override
public PageVO<LoginLogVO> findLoginLogList(Integer pageNum, Integer pageSize, LoginLogVO loginLogVO) {
PageHelper.startPage(pageNum, pageSize);
List<LoginLog> loginLogs = loginLogMapper.selectByExample(o);
List<LoginLogVO> loginLogVOS = new ArrayList<>();
if (!CollectionUtils.isEmpty(loginLogs)) {
for (LoginLog loginLog : loginLogs) {
LoginLogVO logVO = new LoginLogVO();
BeanUtils.copyProperties(loginLog, logVO);
loginLogVOS.add(logVO);
}
}
PageInfo<LoginLog> info = new PageInfo<>(loginLogs);
return new PageVO<>(info.getTotal(), loginLogVOS);
}
3.6mapper 接口
public interface LoginLogMapper extends Mapper<LoginLog> {
}
二、使用 Postman 测试

{
"success": true,
"data": {
"total": 62,
"rows": [
{
"id": 162,
"username": "admin",
"loginTime": "2021-03-25 10:34:40",
"location": "内网IP|0|0|内网IP|内网IP",
"ip": "127.0.0.1",
"userSystem": "Windows 10",
"userBrowser": "Chrome 8"
},
{
"id": 161,
"username": "admin",
"loginTime": "2021-03-24 21:12:07",
"location": "内网IP|0|0|内网IP|内网IP",
"ip": "127.0.0.1",
"userSystem": "Windows 10",
"userBrowser": "Chrome 8"
}
]
}
}