SpringBoot中Bean拷貝及工具類封裝的實現(xiàn)
在我們SpringBoot 項目的開發(fā)中,經(jīng)常需要做對象的拷貝和轉(zhuǎn)化,例如我們需要把前端傳給我們的DTO對象轉(zhuǎn)化為POJO對象存到數(shù)據(jù)庫,返回前端數(shù)據(jù)時需要把POJO對象轉(zhuǎn)換為VO,這篇文章就講講SpringBoot中對象的拷貝及其工具類的封裝。
一、使用Spring BeanUtils
在Spring或SpringBoot項目中有為我們提供一個BeanUtils工具類。
使用方法如下,第一個參數(shù)是源對象,第二個參數(shù)是目標對象:
BeanUtils.copyProperties(Object source, Object target);
還可以繼續(xù)傳入?yún)?shù)進行忽略參數(shù)拷貝:
BeanUtils.copyProperties(Object source, Object target, String... ignoreProperties);
使用示例:
這里我們創(chuàng)建一個UserDto,User實體類,來實現(xiàn)前端傳入Dto對象轉(zhuǎn)為實體類對象
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;
}實現(xiàn)Bean拷貝:
public ResponseResult addUser(AddUserDto addUserDto) {
// 先新建一個user對象
User user = new User();
// 實現(xiàn)把addUserDto拷貝到user對象
BeanUtils.copyProperties(addUserDto, user);
userMapper.insert(user);
return ResponseResult.okResult();
}二、Bean 拷貝工具類封裝
因為基礎(chǔ)的BeanUtils在使用時拷貝非常不方便,還需要我們自己去創(chuàng)建新的User拷貝,對List集合的拷貝還需要我們自己去遍歷,這里我們封裝工具類來實現(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)建目標對象
V result = null;
try {
result = clazz.newInstance();
// 實現(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對象拷貝
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拷貝及工具類封裝的實現(xiàn)的文章就介紹到這了,更多相關(guān)SpringBoot Bean拷貝內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
SpringBoot使用Hibernate攔截器實現(xiàn)時間自動注入的操作代碼
這篇文章主要介紹了SpringBoot使用Hibernate攔截器實現(xiàn)時間自動注入的操作代碼,主要包括hibernate攔截器的相關(guān)知識,結(jié)合實例代碼給大家講解的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-10-10
IntelliJ IDEA 無法正常使用SVN的問題和完美解決辦法
這篇文章主要介紹了IntelliJ IDEA 無法正常使用SVN的問題和解決辦法,本文給大家分享完美解決方案,通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-08-08
java客戶端Etcd官方倉庫jetcd中KeepAlive接口實現(xiàn)
這篇文章主要為大家介紹了java客戶端Etcd官方倉庫jetcd中KeepAlive接口實現(xiàn),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,多多加薪2022-02-02
SpringBoot集成Spring Security的方法
Spring security,是一個強大的和高度可定制的身份驗證和訪問控制框架。這篇文章主要介紹了SpringBoot集成Spring Security的操作方法,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-07-07
springMVC+jersey實現(xiàn)跨服務器文件上傳
這篇文章主要介紹了springMVC+jersey實現(xiàn)跨服務器文件上傳,具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-08-08

