MyBatis分页实现

1.简单版本

@Override
public Page<News> getlist(int page, int pageSize){
    Page<News> pageInfo = new Page<>(page,pageSize);
    //条件查询构造器
    LambdaQueryWrapper<News> queryWrapper  = new LambdaQueryWrapper<>();
    // 添加查询条件根据memeberId进行排序
    //queryWrapper.orderByDesc(Member::getMemberId);
    queryWrapper.orderByDesc(News::getNewId);
    super.page(pageInfo,queryWrapper);
    return pageInfo;
}

2.dto组合版本

Entity

package com.example.ruijiddemo.entity.dto;

import com.example.ruijiddemo.entity.Dishflavor;
import lombok.Data;

import java.io.Serializable;
import java.util.List;

@Data
public class DishDto  implements Serializable {
    private Long id;
    private String name;
    private Long categoryId;
    private String price;
    private String image;
    private String description;
    private Integer status;
    private List<Dishflavor> Dishflavors;
}

Controller

   /* 查询口味表和调料表的数据 */
    @GetMapping("/getlist")
    public R<Page> getlist(int page , int pageSize , HttpServletRequest request){
        return RUtils.success(dishService.getlist(page,pageSize));
    }

Service

Page<DishDto> getlist(int page, int pageSize);

ServiceImpl

 /* 查询口味表的数据 */
    public Page<DishDto> getlist(int page, int pageSize) {


        //条件查询构造器
        Page<Dish> pageInfo = new Page<>(page, pageSize);


        LambdaQueryWrapper<Dish> queryWrapperdish = new LambdaQueryWrapper<>();
        IPage<Dish> pageList = this.page(pageInfo,queryWrapperdish);
        //IPage<Dish> pageList = this.page(pageInfo, new LambdaQueryWrapper<Dish>());


        List<Dish> dishlist = pageList.getRecords();
        List<DishDto> dtolist = CopyUtil.copyList(dishlist, DishDto.class);

        dtolist.forEach(x -> {
            LambdaQueryWrapper<Dishflavor> queryWrapper2 = new LambdaQueryWrapper<>();
            queryWrapper2.eq(Dishflavor::getDishId, x.getId());
            x.setDishflavors(dishflavorMapper.selectList(queryWrapper2));
        });
        Page<DishDto> dishDtoPage = new Page<>();
        dishDtoPage.setRecords(dtolist);
        dishDtoPage.setTotal(pageList.getTotal());

        return dishDtoPage;
    }

}

方法2

        public Page<DishDto> getlist(int page, int pageSize) {  
 //方法二
        Page<Dish> pageinfo = new Page<>(page,pageSize);
        Page<DishDto> dishDtoPage = new Page<>();

        //构造条件构造器
        LambdaQueryWrapper<Dish> queryWrapper  =  new LambdaQueryWrapper<>();
        queryWrapper.orderByAsc(Dish::getId);

        //进行分页查询
        this.page(pageinfo,queryWrapper);

        //对象拷贝
        BeanUtils.copyProperties(pageinfo,dishDtoPage,"records");

        List<Dish> records = pageinfo.getRecords();

        //mylist.stream().map((item)->{
        //    return item;
        //}).collect(Collectors.toList());

        List<DishDto> list = records.stream().map((item)->{
            DishDto dishDto = new DishDto();
            BeanUtils.copyProperties(item,dishDto);


            //根据ID查询对象
            LambdaQueryWrapper<Dishflavor> queryWrapper2 = new LambdaQueryWrapper<>();
            queryWrapper2.eq(Dishflavor::getDishId, item.getId());
            dishDto.setDishflavors(dishflavorMapper.selectList(queryWrapper2));

            return dishDto;
        }).collect(Collectors.toList());

        dishDtoPage.setRecords(list);

        return dishDtoPage;

Post Man

http://localhost:7777/dish/getlist?page=3&pageSize=1
{
    "code": 200,
    "msg": "成功",
    "data": {
        "records": [
            {
                "id": 4,
                "name": "韭菜炒蛋",
                "categoryId": 1,
                "price": "1.50",
                "image": null,
                "description": "韭菜,绿色的,鸡蛋",
                "status": 1,
                "dishflavors": [
                    {
                        "id": 5,
                        "dishId": 4,
                        "name": "主食",
                        "value": "S2"
                    }
                ]
            }
        ],
        "total": 9,
        "size": 10,
        "current": 1,
        "orders": [],
        "optimizeCountSql": true,
        "hitCount": false,
        "countId": null,
        "maxLimit": null,
        "searchCount": true,
        "pages": 1
    }
}

  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值