BeanCopyUtils.java 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. package com.ruoyi.common.utils;
  2. import cn.hutool.core.bean.copier.BeanCopier;
  3. import cn.hutool.core.bean.copier.CopyOptions;
  4. import cn.hutool.core.util.ReflectUtil;
  5. import java.util.List;
  6. import java.util.stream.Collectors;
  7. /**
  8. * bean深拷贝工具
  9. *
  10. * @author Lion Li
  11. */
  12. public class BeanCopyUtils {
  13. /**
  14. * 单对象基于class创建拷贝
  15. *
  16. * @param source 数据来源实体
  17. * @param copyOptions copy条件
  18. * @param desc 描述对象 转换后的对象
  19. * @return desc
  20. */
  21. public static <T, V> V oneCopy(T source, CopyOptions copyOptions, Class<V> desc) {
  22. V v = ReflectUtil.newInstanceIfPossible(desc);
  23. return oneCopy(source, copyOptions, v);
  24. }
  25. /**
  26. * 单对象基于对象创建拷贝
  27. *
  28. * @param source 数据来源实体
  29. * @param copyOptions copy条件
  30. * @param desc 转换后的对象
  31. * @return desc
  32. */
  33. public static <T, V> V oneCopy(T source, CopyOptions copyOptions, V desc) {
  34. return BeanCopier.create(source, desc, copyOptions).copy();
  35. }
  36. /**
  37. * 列表对象基于class创建拷贝
  38. *
  39. * @param sourceList 数据来源实体列表
  40. * @param copyOptions copy条件
  41. * @param desc 描述对象 转换后的对象
  42. * @return desc
  43. */
  44. public static <T, V> List<V> listCopy(List<T> sourceList, CopyOptions copyOptions, Class<V> desc) {
  45. return sourceList.stream()
  46. .map(source -> oneCopy(source, copyOptions, desc))
  47. .collect(Collectors.toList());
  48. }
  49. }