概述
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.springframework.beans.BeanUtils;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
/**
* 描述:对象 属性复制
* 背景:基于 springframework BeanUtils 封装
* 适用:支持不同类间 Object、List、Set、MyBatisPlus Page 同类型同名属性复制
*
* @author czy
* @date 2022/02/26 22:24
**/
public class BeanUtil {
/**
* 对象 属性复制
*
* @param source the source bean
* @param clazz
class to instantiate
* @param <T>
* @return
*/
public static <T> T copyProperties(Object source, Class<T> clazz) {
if (source == null) {
return null;
}
T result = null;
try {
result = clazz.newInstance();
} catch (InstantiationException | IllegalAccessException e) {
e.printStackTrace();
}
BeanUtils.copyProperties(source, result);
return result;
}
/**
* list集合 属性复制
*
* @param sourceList the source list
* @param clazz
class to instantiate
* @param <T>
* @return
*/
public static <T> List<T> copyProperties(List<?> sourceList, Class<T> clazz) {
if (sourceList == null) {
return null;
}
return sourceList.stream().map(item -> copyProperties(item, clazz)).collect(Collectors.toList());
}
/**
* set集合 属性复制
*
* @param sourceSet the source set
* @param clazz
class to instantiate
* @param <T>
* @return
*/
public static <T> Set<T> copyProperties(Set<?> sourceSet, Class<T> clazz) {
if (sourceSet == null) {
return null;
}
return sourceSet.stream().map(item -> copyProperties(item, clazz)).collect(Collectors.toSet());
}
/**
* MyBatis-Plus page属性复制
*
* @param sourcePage the source page
* @param clazz
class to instantiate
* @return
*/
public static <T> Page<T> copyProperties(Page<?> sourcePage, Class<T> clazz) {
if (sourcePage == null) {
return null;
}
Page<T> result = new Page<T>();
result.setCurrent(sourcePage.getCurrent());
result.setSize(sourcePage.getSize());
result.setTotal(sourcePage.getTotal());
result.setPages(sourcePage.getPages());
result.setRecords(copyProperties(sourcePage.getRecords(), clazz));
result.setSearchCount(sourcePage.searchCount());
result.setOptimizeCountSql(sourcePage.optimizeCountSql());
return result;
}
}
最后
以上就是傻傻手机为你收集整理的对象 属性复制工具类, 支持 List、Set、MyBatisPlus Page复制的全部内容,希望文章能够帮你解决对象 属性复制工具类, 支持 List、Set、MyBatisPlus Page复制所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复