首先我们需要清楚的是,前台有后台的
/**
* (这个分页的功能)前端要想后台请求的参数为:
* page;当前页
* rows:m每页大小
* sortBy:排序字段
* desc:是否为降序
* key:查询的关键
*
* 后台要想前台响应的话,我们就需要有响应的结果即可
* total:总条数
* items:当前页数据
* totalPage:有些还需要总页数。
* @param
*/
public class PageResult{ private Long total;// 总条数 private Long totalPage;// 总页数 private List items;// 当前页数据 public PageResult() { } public PageResult(Long total, List items) { this.total = total; this.items = items; } public PageResult(Long total, Long totalPage, List items) { this.total = total; this.totalPage = totalPage; this.items = items; } public Long getTotal() { return total; } public void setTotal(Long total) { this.total = total; } public List getItems() { return items; } public void setItems(List items) { this.items = items; } public Long getTotalPage() { return totalPage; } public void setTotalPage(Long totalPage) { this.totalPage = totalPage; } }
@Autowired private BrandService brandService; /** * 后台向前台请求的三个参数(当前页数据,总条数,总页数) * @param page(当前页) 每页大小(rows)sortBy(排序字段) desc(是否为降序) key(关键字) * @return total(int 总条数) items(List当前页数据) totalPage(int 总页数) */ //前台我们根据url找到这个action。然后根据这些参数,最后我们返回给前台三个参数即可(将其封装到了一个对象里面) @GetMapping("page") public ResponseEntity > queryBrandByPage( @RequestParam(value = "page", defaultValue = "1") Integer page, @RequestParam(value = "rows", defaultValue = "5") Integer rows, @RequestParam(value = "sortBy", required = false) String sortBy, @RequestParam(value = "desc", defaultValue = "false") Boolean desc, @RequestParam(value = "key", required = false) String key) { //System.out.println("controller 的数据 page=>"+page+ "rows=>"+ rows+ "sortBy=>"+sortBy+ "desc=>"+ desc+"key=>"+key); PageResult result=brandService. queryBrandByPageAndSort(page,rows,sortBy,desc,key); if(result==null||result.getItems().size()<1){//这里的小于1,就是总当前页记录数为0的话 return new ResponseEntity<>(HttpStatus.NOT_FOUND); } return ResponseEntity.ok(result); }
@Autowired private BrandMapper brandMapper; public PageResultqueryBrandByPageAndSort( Integer page, Integer rows, String sortBy, Boolean desc, String key) { // 开始分页 page就是当前页(当前是第几页),rows就是页大小 PageHelper.startPage(page, rows);//这个就是相当于 mysql的limit index,total //System.out.println("service 的数据 page=>"+page+ "rows=>"+ rows+ "sortBy=>"+sortBy+ "desc=>"+ desc+"key=>"+key); // 过滤 Example example = new Example(Brand.class); //判断某字符串是否不为空且长度不为0且不由空白符(空格)构成 if (StringUtils.isNotBlank(sortBy)) { // 排序 String orderByClause = sortBy + (desc ? " DESC" : " ASC"); example.setOrderByClause(orderByClause); } // 查询 if (StringUtils.isNotBlank(key)) { example.createCriteria().orLike("name", key).orEqualTo("letter", key.toUpperCase()); } // 查询 List list = brandMapper.selectByExample(example); // for (Brand brand:list){ // System.out.println("品牌"+brand); // } PageInfo pageInfo = new PageInfo<>(list); //System.out.println("这里我们输出的总条数为"+pageInfo.getTotal()); // 返回结果 return new PageResult<>(pageInfo.getTotal(), pageInfo.getList()); }