直接返回page对象(内容很多很杂)
public R getRoomPage(RoomPageDto roomPageDto) {
// * (1)根据房间类型编号精准查询;
// * (2)根据入住状态精准查询
// * (3)根据房间名称模糊查询;
// * (4)根据当前页码和每页显示条数进行分页查询。
LambdaQueryWrapper<Room> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(roomPageDto.getRoomTypeId()!=null,Room::getRoomTypeId,roomPageDto.getRoomTypeId())
.eq(roomPageDto.getState()!=null,Room::getState,roomPageDto.getState())
.like(roomPageDto.getRoomName()!=null,Room::getRoomName,roomPageDto.getRoomName());
//分页
Page<Room> page = new Page<>(roomPageDto.getCurrentPage(),roomPageDto.getPageSize());
page = page(page,queryWrapper);
return R.Success(page);
}
PageVO类(封装结果)
封装返回结果(红色的我们需要的)
"total": 7,
"size": 5,
"current": 1,
"orders": [],
"optimizeCountSql": true,
"hitCount": false,
"countId": null,
"maxLimit": null,
"searchCount": true,
"pages": 2
package com.cqgcxy.conf.result;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import java.util.List;
/**
* @Author: ???
* @Description: 分页查询结果封装
*
*/
@Data
@ApiModel(value = "分页基础类", description = "分页基础类")
public class PageVO<T> {
@ApiModelProperty(value = "页数 默认为0")
private Long current = 0L;
@ApiModelProperty(value = "条数 默认为10")
private Long size = 10L;
@ApiModelProperty(value = "总条数")
private Long total;
@ApiModelProperty(value = "总页数")
private Long pages;
@ApiModelProperty(value = "统一数据")
private List<T> records;
}
public R getRoomPage(RoomPageDto roomPageDto) {
// * (1)根据房间类型编号精准查询;
// * (2)根据入住状态精准查询
// * (3)根据房间名称模糊查询;
// * (4)根据当前页码和每页显示条数进行分页查询。
LambdaQueryWrapper<Room> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(roomPageDto.getRoomTypeId()!=null,Room::getRoomTypeId,roomPageDto.getRoomTypeId())
.eq(roomPageDto.getState()!=null,Room::getState,roomPageDto.getState())
.like(roomPageDto.getRoomName()!=null,Room::getRoomName,roomPageDto.getRoomName());
//分页
Page<Room> page = new Page<>(roomPageDto.getCurrentPage(),roomPageDto.getPageSize());
page = page(page,queryWrapper);
//pageVo
PageVO<Room> pageVO = new PageVO<>();
BeanUtils.copyProperties(page,pageVO);
return R.Success(pageVO);
}
查询结果:
前端不知道roomTypeId是什么,所以返回给前端的内容里面 roomTypeId要求换成对应的roomTypeName
创建RoomVo(主要是把roomTypeId换成对应的roomTypeName)
package com.cqgcxy.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.springframework.validation.annotation.Validated;
import java.math.BigDecimal;
@Data
@EqualsAndHashCode(callSuper = false)
@Validated
@ApiModel(value = "RoomVo",description = "房间结果返回的对象")
public class RoomVo {
@ApiModelProperty(value = "房间编号",required = true)
private Integer roomId;
/**
* 房间名称
*/
@ApiModelProperty(value = "房间名称",required = true)
private String roomName;
/**
* 房间类型名称
*/
@ApiModelProperty(value = "房间类型名称",required = true)
private String roomTypeName;//返回name而不是id
/**
* 电话
*/
@ApiModelProperty(value = "房间电话",required = true)
private String phone;
/**
* 价格
*/
@ApiModelProperty(value = "房间价格",required = true)
private BigDecimal price;
/**
* 入住状态
*/
@ApiModelProperty(value = "入住状态",required = true)
private Integer state;
}
业务层:
public R getRoomPage(RoomPageDto roomPageDto) {
// * (1)根据房间类型编号精准查询;
// * (2)根据入住状态精准查询
// * (3)根据房间名称模糊查询;
// * (4)根据当前页码和每页显示条数进行分页查询。
LambdaQueryWrapper<Room> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(roomPageDto.getRoomTypeId()!=null,Room::getRoomTypeId,roomPageDto.getRoomTypeId())
.eq(roomPageDto.getState()!=null,Room::getState,roomPageDto.getState())
.like(roomPageDto.getRoomName()!=null,Room::getRoomName,roomPageDto.getRoomName());
//分页
Page<Room> page = new Page<>(roomPageDto.getCurrentPage(),roomPageDto.getPageSize());
page = page(page,queryWrapper);
//pageVo(封装返回的页码)
// PageVO<Room> pageVO = new PageVO<>();
// BeanUtils.copyProperties(page,pageVO);
// return R.Success(pageVO);
//前端不知道roomTypeId是什么,所以返回给前端的内容里roomTypeId要求换成对应的roomTypeName
PageVO<RoomVo> pageRoomVO = new PageVO<>();
//拷贝分页对象(相当于直接过滤掉没用的东西)
BeanUtils.copyProperties(page,pageRoomVO);//将page对象拷贝到目标pageRoomVO对象
//拿取records
List<Room> roomList = page.getRecords();
List<RoomVo> roomVoList = new ArrayList<>();//存放roomVo(当前是空的)
//遍历roomList,把数据存进roomVoList
for (Room room : roomList) {
RoomVo roomVo = new RoomVo();
BeanUtils.copyProperties(room,roomVo);//将room对象拷贝到目标roomVo对象(主要是把id换成name)
//根据roomTypeId查询roomTypeName
RoomType roomType = roomTypeService.getById(room.getRoomTypeId());
roomVo.setRoomTypeName(roomType.getRoomTypeName());
roomVoList.add(roomVo);
}
pageRoomVO.setRecords(roomVoList);
return R.Success(pageRoomVO);
}
最后结果:成功把 roomTypeId换成对应的roomTypeName