需求分析:前端页面效果如下
由于项目中要设计很多页面的分页,所以我们可以把分页的一些类和方法设为工具类
public class PageResult<T> implements Serializable {
private static final long serialVersionUID = -3644950655568598241L;
private long total;
private List<T> rows;
public PageResult() {
}
public PageResult(long total, List<T> rows) {
this.total = total;
this.rows = rows;
}
public PageResult(Page<T> page){
this.rows=page.getContent();
this.total=page.getTotalElements();
}
public long getTotal() {
return total;
}
public void setTotal(long total) {
this.total = total;
}
public List<T> getRows() {
return rows;
}
public void setRows(List<T> rows) {
this.rows = rows;
}
}
/**
* 获取分页请求
* @return
*/
protected PageRequest getPageRequest(){
int page = 1;
int size = 10;
Sort sort = null;
try {
String sortName = request.getParameter("sort");
if (sortName == null)
{
sortName = "id";
}
String sortOrder = request.getParameter("sortOrder");
if (sortOrder == null)
{
sortOrder = "asc";
}
if(StringUtils.isNoneBlank(sortName) && StringUtils.isNoneBlank(sortOrder)){
if("desc".equalsIgnoreCase(sortOrder)){
sort = Sort.by(Sort.Direction.DESC, sortName);
}else{
sort = Sort.by(Sort.Direction.ASC, sortName);
}
}
if (request.getParameter("page") == null)
{
page =0;
}
else {
page = Integer.parseInt(request.getParameter("page")) - 1;
}
if (request.getParameter("rows") == null)
{
size=10;
}
else
{
size = Integer.parseInt(request.getParameter("rows"));
}
} catch (Exception e) {
e.printStackTrace();
}
PageRequest pageRequest = PageRequest.of(page, size,sort);
return pageRequest;
}
public interface Pageable { static Pageable unpaged() { return Unpaged.INSTANCE; } default boolean isPaged() { return true; } default boolean isUnpaged() { return !this.isPaged(); } int getPageNumber(); int getPageSize(); long getOffset(); Sort getSort(); default Sort getSortOr(Sort sort) { Assert.notNull(sort, "Fallback Sort must not be null!"); return this.getSort().isSorted() ? this.getSort() : sort; } Pageable next(); Pageable previousOrFirst(); Pageable first(); boolean hasPrevious(); default Optional<Pageable> toOptional() { return this.isUnpaged() ? Optional.empty() : Optional.of(this); } }
controller 层:
@RequestMapping(value = "/selectPeopleManage", method = RequestMethod.GET)
public PageResult<Map<String, Object>> selectPeopleManage(String name, String organization,String job) {
//getPageRequest()这是获取分页请求的方法
Page<Map<String, Object>> bookedList = mapManageService.selectPersonManage(name,organization,job,getPageRequest());
return new PageResult(bookedList);
}
service 层:
Page<Map<String, Object>> selectPersonManage(String name, String organization,String job,Pageable pageable);
serviceImpl 层:
@Override
public Page<Map<String, Object>> selectPersonManage(String name, String organization, String job, Pageable pageable) {
//前台搜索的三个条件
name=(name==null?"":name);
organization=(organization==null?"":organization);
job=(job==null?"":job);
return mapPeopleManageRepository.getPeopleManageListAll( "%"+name+"%", "%"+organization+"%", "%"+job+"%", pageable);
}
Repository 层:(jpa)
@Query(value = "SELECT * from map_people_manage WHERE (name like ?1 and organization like ?2 and job like ?3 )",nativeQuery = true)
Page<Map<String, Object>> getPeopleManageListAll (String name, String organization, String job, Pageable pageable);