1.定义一个返回类PageUtil
public class PageUtil {
/**
* 每页大小
*/
private int pageSize;
/**
* 当前页为第几页
*/
private int number;
/**
* 总共有多少页
*/
private int totalPages;
/**
* 总共有多少条数据
*/
private int totalElements;
/**
* 数据
*/
private List content = new ArrayList();
}
2.定义一个Specification
## 这里我是在UserQuery里写的一个组装的方法
public class UserQuery extends BaseQuery {
private Integer page;
private Integer size;
private String name;
@Override
public Specification createSpec() {
Specification<TUser> systemdictionarydetail = Specifications.<TUser>or()
.like(StringUtil.isNotBlank(name),"unit", "%" + name + "%")
.like(StringUtil.isNotBlank(name),"name", "%" + name + "%")
.like(StringUtil.isNotBlank(name),"phone", "%" + name + "%")
这里要注意 unit,name,phone要和实体类的对应,而不是和数据库字段一致
......
.build();
return systemdictionarydetail;
}
3.使用接口方法
//拿到查询规则
Specification spec = userQuery.createSpec();
//传入分页条件和排序条件拿到分页对象
Pageable pageable = PageRequest.of(page - 1, size, Sort.Direction.DESC, "createTime");
Page<TUser> datas = userRepository.findAll(spec, pageable);
......
//封装到pageUtil
pageUtil.setContent(datas.getContent());
pageUtil.setTotalPages(datas.getTotalPages());
pageUtil.setTotalElements((int) datas.getTotalElements());
pageUtil.setNumber(datas.getNumber() + 1);