Data Transfer Object-DTO,数据传输对象,前端参数设计多个数据表对象

涉及两张表的两个实体对象

用于在业务逻辑层和持久层(数据库访问层)之间传输数据。
DTO的主要目的是将多个实体(Entity)的部分属性或多个实体关联属性封装成一个对象,以便在业务层进行数据传输和处理,从而避免直接暴露实体对象给上层或客户端,即前端的请求设计了多张表的内容
使用步骤-基于mybatisplus
1.创建表1实体类
2.创建表2实体类,封装一个实体2集合
在这里插入图片描述
3.两张表都需创建mapper,service
4.在服务层编写方法,注意,这里传参使用的子类
在这里插入图片描述
5.对应的controller调用该方法即可

涉及两张表的一个实体和另一个实体的单个属性

这里使用到的原理也是Dto
在这里插入图片描述

实现步骤
1.首先定义Page<Dish> pageinfo,通过条件信息,查询出dish表对象
2.其次,定义Page<DishDto> dishDtoPage,数据传输对象类集合,该类是用于存取菜品分类的名称及pageinfo的信息
3.将pageinfo的信息拷贝给dishDtoPage,需要注意的是,Page对象中的records使用于存取dish数据对象的,但是该对象信息不包含菜品分类的类名,不应该拷贝
 BeanUtils.copyProperties(pageinfo,dishDtoPage,"records");
4.遍历查询到的pageinfo信息,该对象用于存取dish表的信息,在遍历的过程中,通过注入CategoryService信息,为categoryName进行赋值
5.将遍历出的信息封装成一个List集合对象
6.通过 dishDtoPage.setRecords(dishDtoList),为DishDto的records字段赋值,最后返回该对象,就能实现菜品分类名称的展示了```

```bash
 public R<Page> page(int page,int pageSize,String name)
    {
    步骤一:
        Page<Dish> pageinfo=new Page<>(page,pageSize);//分页查询,封装一个菜品类,菜品信息
        
        /**
         * 设置Dish对象的查询信息
         */
        LambdaQueryWrapper<Dish> dishLambdaQueryWrapper=new LambdaQueryWrapper<>();
        dishLambdaQueryWrapper.like(name!=null, Dish::getName,name);
        dishLambdaQueryWrapper.orderByDesc(Dish::getUpdateTime);
        dishService.page(pageinfo,dishLambdaQueryWrapper);//查询
     步骤二:
		Page<DishDto> dishDtoPage=new Page<>();//封装一个数据传输对象,以便获取该对象的某些属性
		
        /**
         * 使用BeanUtils.copyProperties方法,将pageinfo拷贝给dishDtoPage,records的参数不拷贝,
         */
        // Page<Dish> ,records封装的是Dish数据对象 protected List<T> records;
     步骤三:
        BeanUtils.copyProperties(pageinfo,dishDtoPage,"records");
		
	 步骤四/五:
        List<Dish> records = pageinfo.getRecords();//dish对象

        /**
         * 遍历Dish对象集合,并为DishDto中的categoryName赋值
         */
        List<DishDto> dishDtoList=records.stream().map((item)->
        {
            DishDto dishDto=new DishDto();//构造方法创建的对象,其属性都为空,需要拷贝records的值
            BeanUtils.copyProperties(item,dishDto);
            Long categoryId = item.getCategoryId();
            Category category = categoryService.getById(categoryId);//根据分类id查找分类
            if(category!=null)
            {
                String categoryName = category.getName();
                dishDto.setCategoryName(categoryName);
            }
            return dishDto;
        }).collect(Collectors.toList());
        /**
         * 将page分页对象中的records重新赋值封装后,在将其返回给前端页面
         */
     步骤六:
        dishDtoPage.setRecords(dishDtoList);
        return R.success(dishDtoPage);
    }
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值