BeanConvertUtil.java 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146
  1. package com.java110.common.util;
  2. import org.apache.commons.beanutils.BeanUtils;
  3. import org.apache.commons.beanutils.ConvertUtils;
  4. import org.apache.commons.beanutils.Converter;
  5. import org.apache.commons.beanutils.PropertyUtils;
  6. import java.text.ParseException;
  7. import java.text.SimpleDateFormat;
  8. import java.util.ArrayList;
  9. import java.util.Date;
  10. import java.util.List;
  11. import java.util.Map;
  12. /**
  13. * @ClassName BeanConvertUtil
  14. * @Description bean 转化工具类
  15. * @Author wuxw
  16. * @Date 2019/4/24 12:53
  17. * @Version 1.0
  18. * add by wuxw 2019/4/24
  19. **/
  20. public final class BeanConvertUtil {
  21. private BeanConvertUtil() {
  22. }
  23. static {
  24. ConvertUtils.register(new Converter() { //注册一个日期转换器
  25. public Object convert(Class type, Object value) {
  26. Date date1 = null;
  27. if (value instanceof String) {
  28. String date = (String) value;
  29. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
  30. try {
  31. date1 = sdf.parse(date);
  32. } catch (ParseException e) {
  33. e.printStackTrace();
  34. }
  35. }
  36. return date1;
  37. }
  38. }, Date.class);
  39. }
  40. /**
  41. * 对象A转为对象B
  42. * 这个也支持map转bean
  43. *
  44. * @param orgBean 原始对象
  45. * @param dstBean 目标对象类
  46. * @param <T1> 原始对象
  47. * @param <T2> 目标对象
  48. * @return 目标对象
  49. */
  50. public static <T1, T2> T2 covertBean(T1 orgBean, T2 dstBean) {
  51. try {
  52. BeanUtils.copyProperties(dstBean, orgBean);
  53. } catch (Exception e) {
  54. throw new RuntimeException("bean转换bean失败", e);
  55. }
  56. return dstBean;
  57. }
  58. /**
  59. * 对象A转为对象B (类)
  60. * 这个也支持map转bean
  61. *
  62. * @param orgBean 原始对象
  63. * @param t 目标对象类
  64. * @param <T1> 原始对象
  65. * @param <T2> 目标对象
  66. * @return 目标对象
  67. */
  68. public static <T1, T2> T2 covertBean(T1 orgBean, Class<T2> t) {
  69. T2 returnModel = null;
  70. try {
  71. returnModel = t.newInstance();
  72. BeanUtils.copyProperties(returnModel, orgBean);
  73. } catch (Exception e) {
  74. e.printStackTrace();
  75. throw new RuntimeException("bean转换bean失败", e);
  76. }
  77. return returnModel;
  78. }
  79. /**
  80. * 对象A集合转为对象B集合
  81. *
  82. * @param orgBeans 原始对象列表
  83. * @param t 目标对象类
  84. * @param <T1> 原始对象
  85. * @param <T2> 目标对象
  86. * @return 目标对象
  87. */
  88. public static <T1, T2> List<T2> covertBeanList(List<T1> orgBeans, Class<T2> t) {
  89. List<T2> newBeanList = new ArrayList<T2>();
  90. for (T1 orgbean : orgBeans) {
  91. T2 newBean = covertBean(orgbean, t);
  92. newBeanList.add(newBean);
  93. }
  94. return newBeanList;
  95. }
  96. /**
  97. * bean转换为map对象
  98. *
  99. * @param orgBean 原始bean
  100. * @return map对象
  101. */
  102. public static Map beanCovertMap(Object orgBean) {
  103. Map newMap = null;
  104. try {
  105. newMap = PropertyUtils.describe(orgBean);
  106. } catch (Exception e) {
  107. throw new RuntimeException("bean转换Map失败", e);
  108. }
  109. return newMap;
  110. }
  111. /**
  112. * bean集合转换为map对象集合
  113. *
  114. * @param orgBeans 原始bean 列表
  115. * @return map对象 列表
  116. */
  117. public static List<Map<String, Object>> beanCovertMapList(List<Object> orgBeans) {
  118. List<Map<String, Object>> newMaps = new ArrayList<Map<String, Object>>();
  119. Map<String, Object> newMap = null;
  120. for (Object orgbean : orgBeans) {
  121. newMap = beanCovertMap(orgbean);
  122. newMaps.add(newMap);
  123. }
  124. return newMaps;
  125. }
  126. }