Page对象、PageVO、封装VO

直接返回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

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值