Java中什么是DTO,什么场景下使用DTO,怎么使用DTO。

这篇具有很好参考价值的文章主要介绍了Java中什么是DTO,什么场景下使用DTO,怎么使用DTO。。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

DTO是数据传输对象(DTO)(Data Transfer Object)。

比如同时操作一个业务但是这个业务涉及到两个表,这时可以再新建一个DTO表,继承与需要使用的表再额外加上这个表里面不含的数据。

比如菜品表,菜品不但需要菜品的信息还需要口味的信息,一个菜品表不够用,可以做个菜品表DTO,继承于菜品表但是里面也有口味表的数据。

import com.zhengdidi.reggie.entity.Dish;
import com.zhengdidi.reggie.entity.DishFlavor;
import lombok.Data;
import java.util.ArrayList;
import java.util.List;

@Data
public class DishDto extends Dish {

    //菜品对应的口味数据
    private List<DishFlavor> flavors = new ArrayList<>();

    private String categoryName;

    private Integer copies;
}

在增删改查时调用这个DTO对象。文章来源地址https://www.toymoban.com/news/detail-595668.html

package com.zhengdidi.reggie.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.zhengdidi.reggie.dto.DishDto;
import com.zhengdidi.reggie.entity.Dish;
import com.zhengdidi.reggie.entity.DishFlavor;
import com.zhengdidi.reggie.mapper.DishMapper;
import com.zhengdidi.reggie.service.DishFlavorService;
import com.zhengdidi.reggie.service.DishService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;
import java.util.stream.Collectors;

@Service
@Slf4j
public class DishServiceImpl extends ServiceImpl<DishMapper,Dish> implements DishService {

    @Autowired
    private DishFlavorService dishFlavorService;

    /**
     * 新增菜品,同时保存对应的口味数据
     * @param dishDto
     */
    @Transactional
    public void saveWithFlavor(DishDto dishDto) {
        //保存菜品的基本信息到菜品表dish
        this.save(dishDto);

        Long dishId = dishDto.getId();//菜品id

        //菜品口味
        List<DishFlavor> flavors = dishDto.getFlavors();
        flavors = flavors.stream().map((item) -> {
            item.setDishId(dishId);
            return item;
        }).collect(Collectors.toList());

        //保存菜品口味数据到菜品口味表dish_flavor
        dishFlavorService.saveBatch(flavors);

    }

    /**
     * 根据id查询菜品信息和对应的口味信息
     * @param id
     * @return
     */
    public DishDto getByIdWithFlavor(Long id) {
        //查询菜品基本信息,从dish表查询
        Dish dish = this.getById(id);

        DishDto dishDto = new DishDto();
        BeanUtils.copyProperties(dish,dishDto);

        //查询当前菜品对应的口味信息,从dish_flavor表查询
        LambdaQueryWrapper<DishFlavor> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.eq(DishFlavor::getDishId,dish.getId());
        List<DishFlavor> flavors = dishFlavorService.list(queryWrapper);
        dishDto.setFlavors(flavors);

        return dishDto;
    }

    @Override
    @Transactional
    public void updateWithFlavor(DishDto dishDto) {
        //更新dish表基本信息
        this.updateById(dishDto);

        //清理当前菜品对应口味数据---dish_flavor表的delete操作
        LambdaQueryWrapper<DishFlavor> queryWrapper = new LambdaQueryWrapper();
        queryWrapper.eq(DishFlavor::getDishId,dishDto.getId());

        dishFlavorService.remove(queryWrapper);

        //添加当前提交过来的口味数据---dish_flavor表的insert操作
        List<DishFlavor> flavors = dishDto.getFlavors();

        flavors = flavors.stream().map((item) -> {
            item.setDishId(dishDto.getId());
            return item;
        }).collect(Collectors.toList());

        dishFlavorService.saveBatch(flavors);
    }
}

到了这里,关于Java中什么是DTO,什么场景下使用DTO,怎么使用DTO。的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Java:do、dto、bo、ao、vo、pojo

    普通的Java对象,是一种简单的JavaBean,主要用于数据传输。POJO类除了属性和必要的getter/setter方法外,没有其他的业务逻辑和特殊的操作,通常作为数据模型使用。 实现类DO(Data Access Object)是一种用于访问和操作数据库数据的设计模式,它允许您定义一个数据访问对象,以

    2023年04月08日
    浏览(26)
  • Java:PO、VO、BO、DO、DAO、DTO、POJO

    💗wei_shuo的个人主页 💫wei_shuo的学习社区 🌐Hello World ! PO是持久化对象,用于表示数据库中的实体或表的映射 通常与数据库表的结构和字段对应 PO的属性对应数据库表的字段,可以进行持久化操作(存储、读取、更新、删除) VO是值对象,用于封装数据 通常是不可变的,

    2024年02月12日
    浏览(32)
  • VO和DTO有什么区别?

            在Java开发中,VO和DTO都是用于数据传输的对象,但它们的含义和用途有所不同。 VO(Value Object)通常是用于表示业务领域中的一个值对象,它是一个纯粹的数据对象,主要用于封装从业务层传递到UI层的数据,以便于UI层展示或者接收用户输入。VO通常不包含业务逻

    2024年02月10日
    浏览(27)
  • java中用SXSSFWorkbook把多个list数据和单个实体dto导出到excel如何导出到多个sheet页详细实例?(亲测)

    以下是一个详细的示例,展示了如何使用SXSSFWorkbook将多个List数据和单个实体DTO导出到多个Sheet页: import org.apache.poi.xssf.streaming.SXSSFWorkbook; import org.apache.poi.xssf.streaming.SXSSFSheet; import org.apache.poi.xssf.streaming.SXSSFRow; import org.apache.poi.xssf.streaming.SXSSFCell; import java.io.FileOutputStream;

    2024年02月11日
    浏览(34)
  • java中用SXSSFWorkbook把多个字段的list数据和单个实体dto导出到excel如何导出到多个sheet页详细实例?

    要使用SXSSFWorkbook将多个字段的List数据和单个实体DTO导出到多个Sheet页,你可以按照以下步骤进行操作: 创建一个SXSSFWorkbook对象作为工作簿。 针对每个字段的List数据,创建一个新的Sheet页,并将数据写入该Sheet页。 创建一个新的Sheet页,用于单个实体DTO的数据。 将单个实体

    2024年02月11日
    浏览(28)
  • 后端开发基础概念 Entity,DAO,DO,DTO,VO, Service,Controller

    Entity主要用于ORM(对象关系映射)框架中,如Hibernate、MyBatis等,以便将数据库中的数据映射为对象,方便进行业务操作。 Entity通常与数据库表一一对应,代表 业务数据 的基本单元。 通常放在项目的model或entity包下。   DAO(数据访问对象): DAO是连接业务逻辑和数据库的桥

    2024年04月08日
    浏览(30)
  • Spring Boot DTO 示例 - 实体到 DTO 的转换

    在本教程中,我们将学习如何在 Spring Boot 应用程序中 创建 DTO(数据传输对象)类,以及如何使用 ModelMapper 库将实体转换为 DTO,反之亦然。 数据传输对象设计模式是一种常用的设计模式。它基本上用于一次性将具有多个属性的数据从客户端传递到服务器,以避免多次调用远

    2024年02月06日
    浏览(29)
  • C# DAO转换为DTO工具类

    DAO(Data Access Object)数据访问对象,是我们在做结构化数据库访问的时候传输的对象,通过这个对象我们可以与数据库中的表建立映射关系 DTO(Data Transfer Object)是我们在与前端进行数据交换时传递的对象 为了数据安全 如果我们直接传递DAO的数据,我们可能回把数据库的底

    2024年02月05日
    浏览(34)
  • 对 PO、BO、DTO、VO 的理解

    PO【persistant object】 持久对象,对应数据库的表。 BO【persistant object】 业务对象,将业务逻辑封装成一个对象。可以理解为 PO 的组合,例如:我们可以以教育经历、工作经验、社会关系作为 PO,将这三者封装成一个简历(BO)。 DTO【Data Transfer Object】 数据传输对象,用在需要

    2023年04月13日
    浏览(28)
  • SpringBoot校验,DTO文件中常用的注解应用案例.

    目录 1、需要引入的Maven依赖 2、CompanyDTO 文件 3、对 DTO文件中使用的校验注解说明 参考文章:        在观看本篇文章之前,可以先参考我之前写的一篇文章 “ Spring5,Service层对DTO文件进行数据格式校验. ”  ,这篇文章是介绍在 Service层 对DTO文件的校验。 以下方的 Compa

    2024年02月12日
    浏览(22)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包