国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

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

這篇具有很好參考價值的文章主要介紹了Java中什么是DTO,什么場景下使用DTO,怎么使用DTO。。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

DTO是數(shù)據(jù)傳輸對象(DTO)(Data Transfer Object)。

比如同時操作一個業(yè)務(wù)但是這個業(yè)務(wù)涉及到兩個表,這時可以再新建一個DTO表,繼承與需要使用的表再額外加上這個表里面不含的數(shù)據(jù)。

比如菜品表,菜品不但需要菜品的信息還需要口味的信息,一個菜品表不夠用,可以做個菜品表DTO,繼承于菜品表但是里面也有口味表的數(shù)據(jù)。

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 {

    //菜品對應(yīng)的口味數(shù)據(jù)
    private List<DishFlavor> flavors = new ArrayList<>();

    private String categoryName;

    private Integer copies;
}

在增刪改查時調(diào)用這個DTO對象。文章來源地址http://www.zghlxwxcb.cn/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;

    /**
     * 新增菜品,同時保存對應(yīng)的口味數(shù)據(jù)
     * @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());

        //保存菜品口味數(shù)據(jù)到菜品口味表dish_flavor
        dishFlavorService.saveBatch(flavors);

    }

    /**
     * 根據(jù)id查詢菜品信息和對應(yīng)的口味信息
     * @param id
     * @return
     */
    public DishDto getByIdWithFlavor(Long id) {
        //查詢菜品基本信息,從dish表查詢
        Dish dish = this.getById(id);

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

        //查詢當(dāng)前菜品對應(yīng)的口味信息,從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);

        //清理當(dāng)前菜品對應(yīng)口味數(shù)據(jù)---dish_flavor表的delete操作
        LambdaQueryWrapper<DishFlavor> queryWrapper = new LambdaQueryWrapper();
        queryWrapper.eq(DishFlavor::getDishId,dishDto.getId());

        dishFlavorService.remove(queryWrapper);

        //添加當(dāng)前提交過來的口味數(shù)據(jù)---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);
    }
}

到了這里,關(guān)于Java中什么是DTO,什么場景下使用DTO,怎么使用DTO。的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

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

    普通的Java對象,是一種簡單的JavaBean,主要用于數(shù)據(jù)傳輸。POJO類除了屬性和必要的getter/setter方法外,沒有其他的業(yè)務(wù)邏輯和特殊的操作,通常作為數(shù)據(jù)模型使用。 實現(xiàn)類DO(Data Access Object)是一種用于訪問和操作數(shù)據(jù)庫數(shù)據(jù)的設(shè)計模式,它允許您定義一個數(shù)據(jù)訪問對象,以

    2023年04月08日
    瀏覽(39)
  • Java:PO、VO、BO、DO、DAO、DTO、POJO

    Java:PO、VO、BO、DO、DAO、DTO、POJO

    ??wei_shuo的個人主頁 ??wei_shuo的學(xué)習(xí)社區(qū) ??Hello World ! PO是持久化對象,用于表示數(shù)據(jù)庫中的實體或表的映射 通常與數(shù)據(jù)庫表的結(jié)構(gòu)和字段對應(yīng) PO的屬性對應(yīng)數(shù)據(jù)庫表的字段,可以進行持久化操作(存儲、讀取、更新、刪除) VO是值對象,用于封裝數(shù)據(jù) 通常是不可變的,

    2024年02月12日
    瀏覽(49)
  • VO和DTO有什么區(qū)別?

    ????????在Java開發(fā)中,VO和DTO都是用于數(shù)據(jù)傳輸?shù)膶ο?,但它們的含義和用途有所不同。 VO(Value Object)通常是用于表示業(yè)務(wù)領(lǐng)域中的一個值對象,它是一個純粹的數(shù)據(jù)對象,主要用于封裝從業(yè)務(wù)層傳遞到UI層的數(shù)據(jù),以便于UI層展示或者接收用戶輸入。VO通常不包含業(yè)務(wù)邏

    2024年02月10日
    瀏覽(20)
  • java中用SXSSFWorkbook把多個list數(shù)據(jù)和單個實體dto導(dǎo)出到excel如何導(dǎo)出到多個sheet頁詳細實例?(親測)

    以下是一個詳細的示例,展示了如何使用SXSSFWorkbook將多個List數(shù)據(jù)和單個實體DTO導(dǎo)出到多個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日
    瀏覽(25)
  • java中用SXSSFWorkbook把多個字段的list數(shù)據(jù)和單個實體dto導(dǎo)出到excel如何導(dǎo)出到多個sheet頁詳細實例?

    要使用SXSSFWorkbook將多個字段的List數(shù)據(jù)和單個實體DTO導(dǎo)出到多個Sheet頁,你可以按照以下步驟進行操作: 創(chuàng)建一個SXSSFWorkbook對象作為工作簿。 針對每個字段的List數(shù)據(jù),創(chuàng)建一個新的Sheet頁,并將數(shù)據(jù)寫入該Sheet頁。 創(chuàng)建一個新的Sheet頁,用于單個實體DTO的數(shù)據(jù)。 將單個實體

    2024年02月11日
    瀏覽(26)
  • 后端開發(fā)基礎(chǔ)概念 Entity,DAO,DO,DTO,VO, Service,Controller

    Entity主要用于ORM(對象關(guān)系映射)框架中,如Hibernate、MyBatis等,以便將數(shù)據(jù)庫中的數(shù)據(jù)映射為對象,方便進行業(yè)務(wù)操作。 Entity通常與數(shù)據(jù)庫表一一對應(yīng),代表 業(yè)務(wù)數(shù)據(jù) 的基本單元。 通常放在項目的model或entity包下。 ? DAO(數(shù)據(jù)訪問對象): DAO是連接業(yè)務(wù)邏輯和數(shù)據(jù)庫的橋

    2024年04月08日
    瀏覽(26)
  • Spring Boot DTO 示例 - 實體到 DTO 的轉(zhuǎn)換

    在本教程中,我們將學(xué)習(xí)如何在 Spring Boot?應(yīng)用程序中 創(chuàng)建 DTO(數(shù)據(jù)傳輸對象)類,以及如何使用 ModelMapper 庫將實體轉(zhuǎn)換為 DTO,反之亦然。 數(shù)據(jù)傳輸對象設(shè)計模式是一種常用的設(shè)計模式。它基本上用于一次性將具有多個屬性的數(shù)據(jù)從客戶端傳遞到服務(wù)器,以避免多次調(diào)用遠

    2024年02月06日
    瀏覽(20)
  • C# DAO轉(zhuǎn)換為DTO工具類

    C# DAO轉(zhuǎn)換為DTO工具類

    DAO(Data Access Object)數(shù)據(jù)訪問對象,是我們在做結(jié)構(gòu)化數(shù)據(jù)庫訪問的時候傳輸?shù)膶ο?,通過這個對象我們可以與數(shù)據(jù)庫中的表建立映射關(guān)系 DTO(Data Transfer Object)是我們在與前端進行數(shù)據(jù)交換時傳遞的對象 為了數(shù)據(jù)安全 如果我們直接傳遞DAO的數(shù)據(jù),我們可能回把數(shù)據(jù)庫的底

    2024年02月05日
    瀏覽(19)
  • 對 PO、BO、DTO、VO 的理解

    對 PO、BO、DTO、VO 的理解

    PO【persistant object】 持久對象,對應(yīng)數(shù)據(jù)庫的表。 BO【persistant object】 業(yè)務(wù)對象,將業(yè)務(wù)邏輯封裝成一個對象??梢岳斫鉃?PO 的組合,例如:我們可以以教育經(jīng)歷、工作經(jīng)驗、社會關(guān)系作為 PO,將這三者封裝成一個簡歷(BO)。 DTO【Data Transfer Object】 數(shù)據(jù)傳輸對象,用在需要

    2023年04月13日
    瀏覽(29)
  • Springboot接口多個DTO入?yún)⒌腜ostman上傳方式

    Springboot接口多個DTO入?yún)⒌腜ostman上傳方式

    TO(Data Transfer Object)是一個常見的設(shè)計模式,用于封裝數(shù)據(jù)傳輸對象。它通常用于將數(shù)據(jù)從一個層傳遞到另一個層,例如將數(shù)據(jù)從服務(wù)層傳遞到控制器層。 在Spring Boot中,使用DTO作為方法參數(shù)可以使代碼更具可讀性和可維護性。例如,如果您需要從前端傳遞多個參數(shù)到控制器

    2024年02月03日
    瀏覽(26)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包