前言:
- 一般返回全部东西的话就要用到page页面,
- 然后一般返回普通的page(import com.baomidou.mybatisplus.extension.plugins.pagination.Page
- 其中要新建一个页面的到页面的大小,页面页数
PageResult类:
package org.cuit.epoch.util.result;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
/**
* @author Pymjl
* @date 2022/1/21 22:00
*/
public class PageResult<T> implements Iterable<T>, Serializable {
private static final long serialVersionUID = -3720998571176536865L;
/**
* 数据条数
*/
private List<T> records = new ArrayList<>();
/**
* 一共有多少条数据
*/
private long totalElements;
/**
* 当前页数
*/
private long currentPage;
/**
* 一页数据最多有多少条数据
*/
private long pageSize;
/**
* 一共有多少页
*/
private long totalPages;
/**
* 当前页数有多少条数据
*/
private int numberOfElements;
public PageResult() {
}
/**
* 构造方法,只用把原来的page类放进来即可
*
* @param page 查出来的分页对象
*/
public PageResult(Page<T> page) {
this.records = page.getRecords();
this.totalElements = page.getTotal();
this.currentPage = page.getCurrent();
this.pageSize = page.getSize();
this.numberOfElements = page.getRecords().size();
this.totalPages = page.getPages();
}
/**
* 是否有前一页
*
* @return boolean
*/
public boolean hasPrevious() {
return getCurrentPage() > 0;
}
/**
* 是否有下一页
*
* @return boolean
*/
public boolean hasNext() {
return getCurrentPage() + 1 < getTotalPages();
}
/**
* 获取总的页数
*
* @return long
*/
public long getTotalPages() {
return this.totalPages;
}
/**
* 获取当前页的数据
*
* @return List<T>
*/
public List<T> getRecords() {
return Collections.unmodifiableList(records);
}
/**
* 设置内容
*
* @param records 内容
*/
public void setRecords(List<T> records) {
this.records = records;
}
/**
* 是否有内容
*
* @return boolean
*/
public boolean hasRecords() {
return getNumberOfElements() > 0;
}
/**
* 获取单页大小
*/
public Long getPageSize() {
return pageSize;
}
/**
* 设置单页大小
*/
public void setPageSize(Long pageSize) {
this.pageSize = pageSize;
}
/**
* 获取全部元素数目
*/
public long getTotalElements() {
return totalElements;
}
/**
* 设置全部元素数目
*/
public void setTotalElements(long totalElements) {
this.totalElements = totalElements;
}
/**
* 获取当前页号
*/
public Long getCurrentPage() {
return currentPage;
}
/**
* 设置当前页号
*/
public void setCurrentPage(Long currentPage) {
this.currentPage = currentPage;
}
/**
* 获取单页元素数目
*/
public int getNumberOfElements() {
return numberOfElements;
}
/**
* 设置单页元素数目
*/
public void setNumberOfElements(int numberOfElements) {
this.numberOfElements = numberOfElements;
}
/**
* 迭代器
*/
@Override
public Iterator<T> iterator() {
return getRecords().iterator();
}
}
PrizeService:
public interface PrizeService extends IService<Prize> {
Page<Prize> getPrizeByEverything(Integer currentPage, Integer pageSize, PrizeUpdateDTO PrizeUpdateDTO);
}
PrizeServiceImpl:
/**
* @Description:
* @Author Ladidol
* @Date: 2022/3/17 21:03
* @Version 1.0
*/
@Service
public class PrizeServiceImpl extends ServiceImpl<PrizeMapper, Prize> implements PrizeService {
@Resource
PrizeMapper prizeMapper;
/*
通过奖项的一些属性筛选,查询,通过分页返回
*/
@Override
public Page<Prize> getPrizeByEverything(Integer currentPage, Integer pageSize, PrizeUpdateDTO prizeUpdateDTO) {
LambdaQueryWrapper<Prize> queryWrapper = new LambdaQueryWrapper<>();
System.out.println("需要查询的班级为:" + prizeUpdateDTO.getClbum());
queryWrapper
.like(Strings.isNotBlank(prizeUpdateDTO.getPrizeName()),Prize::getPrizeName,prizeUpdateDTO.getPrizeName())
.like(Strings.isNotBlank(prizeUpdateDTO.getPrizeWinner()),Prize::getPrizeWinner,prizeUpdateDTO.getPrizeWinner())
.like(Strings.isNotBlank(prizeUpdateDTO.getClbum()),Prize::getClbum,prizeUpdateDTO.getClbum())
.like(Strings.isNotBlank(prizeUpdateDTO.getGrade()),Prize::getGrade,prizeUpdateDTO.getGrade())
.like(Strings.isNotBlank(prizeUpdateDTO.getProfession()),Prize::getProfession,prizeUpdateDTO.getProfession())
.like(Strings.isNotBlank(prizeUpdateDTO.getPrizeName()),Prize::getPrizeName,prizeUpdateDTO.getPrizeName());
if (prizeUpdateDTO.getPrizeTime() != null){
queryWrapper.like(Prize::getPrizeTime,prizeUpdateDTO.getPrizeTime());
}
Page<Prize> prizePage = new Page<>(currentPage, pageSize);
prizeMapper.selectPage(prizePage,queryWrapper);
return prizePage;
}
}
PrizeController:
/**
* @Description: todo 异常拦截
* @Author Ladidol
* @Date: 2022/3/17 20:51
* @Version 1.0
*/
@RestController
@RequestMapping("/prizes")
public class PrizeController {
@Resource
PrizeService prizeService
/**
* @Description: 通过分类筛选,你想要怎么筛选都可以,你直接传一个prize对象给我就行
* 这里的prizeUpdateDTO没有将json中的class识别转换成clbum,一个小bug,是因为,没有加@requestBody这个注解,这里是直接从require参数中取值,不是json中取值,@Json就没有很大的作用,可以新建一个类
*
* @Author: ladidol
* @Date: 2022/3/18 11:28
* @Param:
* @Return:
*/
@GetMapping("/searchByEverything")
public Result<PageResult<Prize>> getPrizesByEverything(@RequestParam("currentPage")Integer currentPage, @RequestParam("pageSize")Integer pageSize, PrizeUpdateDTO prizeUpdateDTO){
return R.success(new PageResult<>(prizeService.getPrizeByEverything(currentPage, pageSize, prizeUpdateDTO)));
}
}
PrizeUpdateDTO:
/**
* @Description:
* @Author Ladidol
* @Date: 2022/3/17 21:15
* @Version 1.0
*/
@Data
public class PrizeUpdateDTO {
@NotNull(message = "奖项id不能为空")
private Long id;
@NotBlank(message = "奖项者不能为空")
private String prizeWinner;
@NotBlank(message = "奖项名字不能为空")
private String prizeName;
@NotNull(message = "奖项时间不能为空")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date prizeTime;
@NotBlank(message = "奖项文件不能为空")
private String url;
@NotBlank(message = "专业不能为空")
private String profession;
@NotBlank(message = "年级不能为空")
private String grade;
@NotBlank(message = "班级不能为空")
@JsonProperty("class")
private String clbum;//班级
}
apifox上查询结果:
例一:
途中是对奖项名字prizeName带有"奖项"和奖项专业profession带有计算机的进行的筛选返回
{
"result": {
"records": [
{
"id": 12,
"prizeWinner": "小小1",
"prizeName": "奖项11",
"prizeTime": "2022-03-17 22:16:35",
"url": "http://1.15.245.21:8888/group1/M00/00/00/rBEAA2IzIqiAIYUnAACQbY6JA7I103.jpg",
"profession": "计算机",
"grade": "20级",
"createTime": "2022-03-18 12:44:11",
"updateTime": "2022-03-18 12:44:11",
"class": "201"
},
{
"id": 13,
"prizeWinner": "小小2",
"prizeName": "奖项11",
"prizeTime": "2022-03-17 22:16:35",
"url": "http://1.15.245.21:8888/group1/M00/00/00/rBEAA2IzIqiAIYUnAACQbY6JA7I103.jpg",
"profession": "计算机",
"grade": "20级",
"createTime": "2022-03-18 12:44:17",
"updateTime": "2022-03-18 12:44:17",
"class": "201"
},
{
"id": 14,
"prizeWinner": "小小3",
"prizeName": "奖项11",
"prizeTime": "2022-03-17 22:16:35",
"url": "http://1.15.245.21:8888/group1/M00/00/00/rBEAA2IzIqiAIYUnAACQbY6JA7I103.jpg",
"profession": "计算机",
"grade": "20级",
"createTime": "2022-03-18 12:44:22",
"updateTime": "2022-03-18 12:44:22",
"class": "201"
},
{
"id": 15,
"prizeWinner": "小小4",
"prizeName": "奖项11",
"prizeTime": "2022-03-17 22:16:35",
"url": "http://1.15.245.21:8888/group1/M00/00/00/rBEAA2IzIqiAIYUnAACQbY6JA7I103.jpg",
"profession": "计算机",
"grade": "20级",
"createTime": "2022-03-18 12:44:29",
"updateTime": "2022-03-18 12:44:29",
"class": "201"
}
],
"succeed": true,
"message": "成功",
"totalElements": 4,
"currentPage": 1,
"pageSize": 10,
"totalPages": 1,
"numberOfElements": 4
},
"succeed": true,
"message": "成功"
}
例二:直接查询全部奖项
结果:
{
"result": {
"records": [
{
"id": 2,
"prizeWinner": "小李",
"prizeName": "蓝桥杯一等奖省",
"prizeTime": "2022-03-09 20:42:25",
"url": "http://1.15.245.21:8888/group1/M00/00/00/rBEAA2IzIqiAIYUnAACQbY6JA7I103.jpg",
"profession": "计算机",
"grade": "20级",
"createTime": "2022-03-13 15:09:34",
"updateTime": "2022-03-13 15:09:36",
"class": "202"
},
{
"id": 3,
"prizeWinner": "小钱",
"prizeName": "奖项1",
"prizeTime": "2022-03-17 22:16:35",
"url": "http://1.15.245.21:8888/group1/M00/00/00/rBEAA2IzIqiAIYUnAACQbY6JA7I103.jpg",
"profession": "电子信息",
"grade": "20级",
"createTime": "2022-03-13 15:17:39",
"updateTime": "2022-03-13 15:17:42",
"class": "208"
},
{
"id": 4,
"prizeWinner": "小金",
"prizeName": "获奖1",
"prizeTime": "2022-03-17 20:42:31",
"url": null,
"profession": "大气",
"grade": "19级",
"createTime": "2022-03-13 16:35:24",
"updateTime": "2022-03-13 16:35:24",
"class": "191"
},
{
"id": 6,
"prizeWinner": "小彭",
"prizeName": "获奖3",
"prizeTime": "2022-03-17 20:42:36",
"url": null,
"profession": "区块链",
"grade": "18级",
"createTime": "2022-03-13 16:42:22",
"updateTime": "2022-03-13 16:42:22",
"class": "181"
},
{
"id": 7,
"prizeWinner": "小刚",
"prizeName": "获奖7",
"prizeTime": "2022-03-17 20:42:41",
"url": null,
"profession": "资环",
"grade": "17级",
"createTime": "2022-03-13 17:46:13",
"updateTime": "2022-03-13 17:46:13",
"class": "176"
},
{
"id": 8,
"prizeWinner": "李华",
"prizeName": "获奖8",
"prizeTime": "2022-03-17 20:42:44",
"url": null,
"profession": "资环",
"grade": "19级",
"createTime": "2022-03-13 17:54:23",
"updateTime": "2022-03-13 17:54:23",
"class": "194"
},
{
"id": 9,
"prizeWinner": "小小",
"prizeName": "获奖9",
"prizeTime": "2022-03-17 20:42:47",
"url": null,
"profession": "外国语",
"grade": "21级",
"createTime": "2022-03-13 21:55:14",
"updateTime": "2022-03-13 21:55:14",
"class": "212"
},
{
"id": 11,
"prizeWinner": "小强",
"prizeName": "项11",
"prizeTime": "2022-03-17 22:16:35",
"url": "http://1.15.245.21:8888/group1/M00/00/00/rBEAA2IzIqiAIYUnAACQbY6JA7I103.jpg",
"profession": "计算机",
"grade": "20级",
"createTime": "2022-03-17 22:26:15",
"updateTime": "2022-03-17 22:26:15",
"class": "201"
},
{
"id": 12,
"prizeWinner": "小小1",
"prizeName": "奖项11",
"prizeTime": "2022-03-17 22:16:35",
"url": "http://1.15.245.21:8888/group1/M00/00/00/rBEAA2IzIqiAIYUnAACQbY6JA7I103.jpg",
"profession": "计算机",
"grade": "20级",
"createTime": "2022-03-18 12:44:11",
"updateTime": "2022-03-18 12:44:11",
"class": "201"
},
{
"id": 13,
"prizeWinner": "小小2",
"prizeName": "奖项11",
"prizeTime": "2022-03-17 22:16:35",
"url": "http://1.15.245.21:8888/group1/M00/00/00/rBEAA2IzIqiAIYUnAACQbY6JA7I103.jpg",
"profession": "计算机",
"grade": "20级",
"createTime": "2022-03-18 12:44:17",
"updateTime": "2022-03-18 12:44:17",
"class": "201"
}
],
"succeed": true,
"message": "成功",
"totalElements": 12,
"currentPage": 1,
"pageSize": 10,
"totalPages": 2,
"numberOfElements": 10
},
"succeed": true,
"message": "成功"
}
欢迎点赞关注哦!
也欢迎到访我的博客!小小的博客传送门!