最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringBoot中Bean拷貝及工具類(lèi)封裝的實(shí)現(xiàn)

 更新時(shí)間:2023年05月11日 09:31:40   作者:JK凱  
本文主要介紹了SpringBoot中Bean拷貝及工具類(lèi)封裝的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

在我們SpringBoot 項(xiàng)目的開(kāi)發(fā)中,經(jīng)常需要做對(duì)象的拷貝和轉(zhuǎn)化,例如我們需要把前端傳給我們的DTO對(duì)象轉(zhuǎn)化為POJO對(duì)象存到數(shù)據(jù)庫(kù),返回前端數(shù)據(jù)時(shí)需要把POJO對(duì)象轉(zhuǎn)換為VO,這篇文章就講講SpringBoot中對(duì)象的拷貝及其工具類(lèi)的封裝。

一、使用Spring BeanUtils

SpringSpringBoot項(xiàng)目中有為我們提供一個(gè)BeanUtils工具類(lèi)。

使用方法如下,第一個(gè)參數(shù)是源對(duì)象,第二個(gè)參數(shù)是目標(biāo)對(duì)象:

BeanUtils.copyProperties(Object source, Object target);

還可以繼續(xù)傳入?yún)?shù)進(jìn)行忽略參數(shù)拷貝:

BeanUtils.copyProperties(Object source, Object target, String... ignoreProperties);

使用示例:

這里我們創(chuàng)建一個(gè)UserDtoUser實(shí)體類(lèi),來(lái)實(shí)現(xiàn)前端傳入Dto對(duì)象轉(zhuǎn)為實(shí)體類(lèi)對(duì)象

domain.entity.User

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Date;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
    private Long id;
    private String username;
    private Integer age;
    private Date createTime;
    private Date updateTime;
    private Integer deleted;
}

domain.dto.AddUserDto

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class AddUserDto {
    private String username;
    private Integer age;
}

實(shí)現(xiàn)Bean拷貝:

public ResponseResult addUser(AddUserDto addUserDto) {
    // 先新建一個(gè)user對(duì)象
    User user = new User();
    // 實(shí)現(xiàn)把a(bǔ)ddUserDto拷貝到user對(duì)象
    BeanUtils.copyProperties(addUserDto, user);
    userMapper.insert(user);
    return ResponseResult.okResult();
}

二、Bean 拷貝工具類(lèi)封裝

因?yàn)榛A(chǔ)的BeanUtils在使用時(shí)拷貝非常不方便,還需要我們自己去創(chuàng)建新的User拷貝,對(duì)List集合的拷貝還需要我們自己去遍歷,這里我們封裝工具類(lèi)來(lái)實(shí)現(xiàn)這些功能

import org.springframework.beans.BeanUtils;
import java.util.List;
import java.util.stream.Collectors;
public class BeanCopyUtils {
    private BeanCopyUtils() {
    }
    public static <V> V copyBean(Object source, Class<V> clazz) {
        // 創(chuàng)建目標(biāo)對(duì)象
        V result = null;
        try {
            result = clazz.newInstance();
            // 實(shí)現(xiàn)屬性拷貝
            BeanUtils.copyProperties(source, result);
        } catch (Exception e) {
            e.printStackTrace();
        }
        //返回
        return result;
    }
    public static <O, V> List<V> copyBeanList(List<O> list, Class<V> clazz) {
        return list.stream()
                .map(o -> copyBean(o, clazz))
                .collect(Collectors.toList());
    }
}

使用示例

  • 普通Bean對(duì)象拷貝
public ResponseResult addUser(AddUserDto addUserDto) {
    User user = BeanCopyUtils.copyBean(addUserDto, User.class);
    userMapper.insert(user);
    return ResponseResult.okResult();
}
  • List拷貝
public ResponseResult getUser(Integer pageNum, Integer pageSize) {
    Page<User> userPage = new Page<>(pageNum, pageSize);
    userMapper.selectPage(userPage, null);
    List<UserVo> userVos = BeanCopyUtils.copyBeanList(userPage.getRecords(), UserVo.class);
    PageVo pageVo = new PageVo(userVos, userPage.getTotal());
    return ResponseResult.okResult(pageVo);
}

到此這篇關(guān)于SpringBoot中Bean拷貝及工具類(lèi)封裝的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)SpringBoot Bean拷貝內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • SpringBoot如何讀取war包jar包和Resource資源

    SpringBoot如何讀取war包jar包和Resource資源

    這篇文章主要介紹了SpringBoot如何讀取war包jar包和Resource資源,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-01-01
  • javaweb中ajax請(qǐng)求后臺(tái)servlet(實(shí)例)

    javaweb中ajax請(qǐng)求后臺(tái)servlet(實(shí)例)

    下面小編就為大家?guī)?lái)一篇javaweb中ajax請(qǐng)求后臺(tái)servlet(實(shí)例)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-06-06
  • Maven之遠(yuǎn)程倉(cāng)庫(kù)的配置詳解

    Maven之遠(yuǎn)程倉(cāng)庫(kù)的配置詳解

    這篇文章主要介紹了Maven之遠(yuǎn)程倉(cāng)庫(kù)的配置詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • springboot打成jar后無(wú)法讀取根路徑和文件的解決

    springboot打成jar后無(wú)法讀取根路徑和文件的解決

    這篇文章主要介紹了springboot打成jar后無(wú)法讀取根路徑和文件的解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • 一文帶你掌握J(rèn)PA實(shí)體類(lèi)注解

    一文帶你掌握J(rèn)PA實(shí)體類(lèi)注解

    這篇文章主要給大家詳細(xì)介紹一下?JPA?實(shí)體類(lèi)中的注解,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)Java有一定的幫助,感興趣的小伙伴可以了解一下
    2023-01-01
  • SpringMVC存取Session的兩種方法

    SpringMVC存取Session的兩種方法

    Spring MVC是個(gè)非常優(yōu)秀的框架,本篇文章主要介紹了SpringMVC存取Session的兩種方法,具有一定的參考價(jià)值,有興趣的可以了解一下。
    2017-01-01
  • springboot使用之多個(gè)filter的執(zhí)行順序以及配置方式

    springboot使用之多個(gè)filter的執(zhí)行順序以及配置方式

    這篇文章主要介紹了springboot使用之多個(gè)filter的執(zhí)行順序以及配置方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • Spring Security如何優(yōu)雅的增加OAuth2協(xié)議授權(quán)模式

    Spring Security如何優(yōu)雅的增加OAuth2協(xié)議授權(quán)模式

    這篇文章主要介紹了Spring Security如何優(yōu)雅的增加OAuth2協(xié)議授權(quán)模式,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • WIN10系統(tǒng)中添加bat腳本重啟jar服務(wù)

    WIN10系統(tǒng)中添加bat腳本重啟jar服務(wù)

    在bat腳本中執(zhí)行java服務(wù),命令與cmd中類(lèi)似,下面這篇文章主要給大家介紹了關(guān)于WIN10系統(tǒng)中添加bat腳本重啟jar服務(wù)的相關(guān)資料,文中通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2023-12-12
  • SpringBoot部署到Linux讀取resources下的文件及遇到的坑

    SpringBoot部署到Linux讀取resources下的文件及遇到的坑

    本文主要給大家介紹SpringBoot部署到Linux讀取resources下的文件,在平時(shí)業(yè)務(wù)開(kāi)發(fā)過(guò)程中,很多朋友在獲取到文件內(nèi)容亂碼或者文件讀取不到的問(wèn)題,今天給大家分享小編遇到的坑及處理方案,感興趣的朋友跟隨小編一起看看吧
    2021-06-06

最新評(píng)論

淮北市| 大兴区| 南部县| 宁蒗| 三穗县| 乃东县| 如皋市| 湘潭市| 芮城县| 罗甸县| 红河县| 克山县| 闽清县| 独山县| 海晏县| 桃园县| 通州区| 石家庄市| 信宜市| 平利县| 西丰县| 印江| 察哈| 招远市| 八宿县| 汶川县| 婺源县| 卓资县| 白银市| 大英县| 阿荣旗| 海丰县| 罗定市| 航空| 茂名市| 常熟市| 桂林市| 财经| 黄山市| 桑植县| 罗平县|