欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

一、使用Spring BeanUtils

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

使用方法如下,第一個(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í)體類,來實(shí)現(xiàn)前端傳入Dto對(duì)象轉(zhuǎn)為實(shí)體類對(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 拷貝工具類封裝

因?yàn)榛A(chǔ)的BeanUtils在使用時(shí)拷貝非常不方便,還需要我們自己去創(chuàng)建新的User拷貝,對(duì)List集合的拷貝還需要我們自己去遍歷,這里我們封裝工具類來實(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拷貝及工具類封裝的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)SpringBoot Bean拷貝內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • SpringBoot使用Hibernate攔截器實(shí)現(xiàn)時(shí)間自動(dòng)注入的操作代碼

    SpringBoot使用Hibernate攔截器實(shí)現(xiàn)時(shí)間自動(dòng)注入的操作代碼

    這篇文章主要介紹了SpringBoot使用Hibernate攔截器實(shí)現(xiàn)時(shí)間自動(dòng)注入的操作代碼,主要包括hibernate攔截器的相關(guān)知識(shí),結(jié)合實(shí)例代碼給大家講解的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-10-10
  • Java日常練習(xí)題,每天進(jìn)步一點(diǎn)點(diǎn)(42)

    Java日常練習(xí)題,每天進(jìn)步一點(diǎn)點(diǎn)(42)

    下面小編就為大家?guī)硪黄狫ava基礎(chǔ)的幾道練習(xí)題(分享)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧,希望可以幫到你
    2021-07-07
  • IntelliJ IDEA 無法正常使用SVN的問題和完美解決辦法

    IntelliJ IDEA 無法正常使用SVN的問題和完美解決辦法

    這篇文章主要介紹了IntelliJ IDEA 無法正常使用SVN的問題和解決辦法,本文給大家分享完美解決方案,通過圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-08-08
  • Mybatis如何直接執(zhí)行SQL語句

    Mybatis如何直接執(zhí)行SQL語句

    這篇文章主要介紹了Mybatis如何直接執(zhí)行SQL語句,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • java客戶端Etcd官方倉庫jetcd中KeepAlive接口實(shí)現(xiàn)

    java客戶端Etcd官方倉庫jetcd中KeepAlive接口實(shí)現(xiàn)

    這篇文章主要為大家介紹了java客戶端Etcd官方倉庫jetcd中KeepAlive接口實(shí)現(xiàn),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,多多加薪
    2022-02-02
  • SpringBoot集成Spring Security的方法

    SpringBoot集成Spring Security的方法

    Spring security,是一個(gè)強(qiáng)大的和高度可定制的身份驗(yàn)證和訪問控制框架。這篇文章主要介紹了SpringBoot集成Spring Security的操作方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-07-07
  • springMVC+jersey實(shí)現(xiàn)跨服務(wù)器文件上傳

    springMVC+jersey實(shí)現(xiàn)跨服務(wù)器文件上傳

    這篇文章主要介紹了springMVC+jersey實(shí)現(xiàn)跨服務(wù)器文件上傳,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-08-08
  • Mybatis自定義類型轉(zhuǎn)換器的使用技巧

    Mybatis自定義類型轉(zhuǎn)換器的使用技巧

    這篇文章主要介紹了Mybatis自定義類型轉(zhuǎn)換器的使用技巧,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • 貨拉拉大數(shù)據(jù)對(duì)BitMap的探索實(shí)踐詳解

    貨拉拉大數(shù)據(jù)對(duì)BitMap的探索實(shí)踐詳解

    這篇文章主要為大家介紹了貨拉拉大數(shù)據(jù)對(duì)BitMap的探索實(shí)踐詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-09-09
  • Java8簡單了解Lambda表達(dá)式與函數(shù)式接口

    Java8簡單了解Lambda表達(dá)式與函數(shù)式接口

    這篇文章主要介紹了Java8簡單了解Lambda表達(dá)式與函數(shù)式接口,具有一定參考價(jià)值,需要的朋友可以了解下。
    2017-11-11

最新評(píng)論