jpa分页查找
- PageReq
package cn.xiaowenjie.commons.beans;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort.Direction;
import org.springframework.util.StringUtils;
public class PageReq {
private int current = 1;
private int rowCount = 10;
private String sortfield = "";
private String sort = "";
private String keyword = "";
public PageReq() {
super();
}
public PageReq(int current, int rowCount, String sortfield, String sort, String keyword) {
super();
this.current = current;
this.rowCount = rowCount;
this.sortfield = sortfield;
this.sort = sort;
this.keyword = keyword;
}
public PageReq getPageable() {
return new PageReq(current, rowCount, sortfield, sort, keyword);
}
public Pageable toPageable() {
// pageable里面是从第0页开始的。
Pageable pageable = null;
if (StringUtils.isEmpty(sortfield)) {
pageable = new PageRequest(current - 1, rowCount);
} else {
pageable = new PageRequest(current - 1, rowCount,
"desc".equalsIgnoreCase(sort) ? Direction.DESC : Direction.ASC, sortfield);
}
return pageable;
}
@Override
public String toString() {
return "PageReq [current=" + current + ", rowCount=" + rowCount + ", sortfield=" + sortfield + ", sort=" + sort
+ ", keyword=" + keyword + "]";
}
public int getCurrent() {
return current;
}
public void setCurrent(int current) {
this.current = current;
}
public int getRowCount() {
return rowCount;
}
public void setRowCount(int rowCount) {
this.rowCount = rowCount;
}
public String getSortfield() {
return sortfield;
}
public void setSortfield(String sortfield) {
this.sortfield = sortfield;
}
public String getSort() {
return sort;
}
public void setSort(String sort) {
this.sort = sort;
}
public String getKeyword() {
return keyword;
}
public void setKeyword(String keyword) {
this.keyword = keyword;
}
}
>PageResp
package cn.xiaowenjie.commons.beans;
import java.util.List;
import org.springframework.data.domain.Page;
public class PageResp<T> {
private List<T> rows;
private int current;
private int rowCount;
private long total;
public PageResp(Page<T> page) {
this.rows = page.getContent();
this.current = page.getNumber() + 1;
this.rowCount = page.getSize();
this.total = page.getTotalElements();
}
public List<T> getRows() {
return rows;
}
public void setRows(List<T> rows) {
this.rows = rows;
}
public int getCurrent() {
return current;
}
public void setCurrent(int current) {
this.current = current;
}
public int getRowCount() {
return rowCount;
}
public void setRowCount(int rowCount) {
this.rowCount = rowCount;
}
public long getTotal() {
return total;
}
public void setTotal(long total) {
this.total = total;
}
}
- PagingAndSortingRepository
package cn.xiaowenjie.star.repositorys;
import org.bson.types.ObjectId;
import org.springframework.data.repository.PagingAndSortingRepository;
import cn.xiaowenjie.star.beans.Article;
public interface ArticleRepository extends PagingAndSortingRepository<Article, ObjectId> {
}
- Controller
@ResponseBody
@RequestMapping(value = "/list")
public PageResp<Article> list(PageReq param) {
log.info("list=" + param);
return new PageResp<Article>(articleRes.findAll(param.toPageable()));
}