由于需要在各个bean直接进行copy数据,除了傻瓜式的set/get or constructor来copy数据外,spring提供了直接copybean的工具类,原理其实就是通过java反射来根据目标bean的字段名调用其set方法来设值注入。除此之外,项目中还常见map与bean之间的转换。特封装此类,以供大家使用。
一下介绍一下常用的工具类:
一:BeanUtils.copyProperties()

  long startTime = System.currentTimeMillis();UserInfoPO u1 = new UserInfoPO();u1.setQq("123");u1.setCreateTime(new Date());u1.setUsername("张三");UserInfoPO u2 = new UserInfoPO();BeanUtils.copyProperties(u1, u2);long endTime = System.currentTimeMillis();System.out.println("当前程序耗时:" + (endTime - startTime) + "ms");

跑完程序看了下耗时:

通过Spring的内部重写的copy内:

二:TransferUtils.transferBean()

  long startTime = System.currentTimeMillis();UserInfoPO u1 = new UserInfoPO();u1.setQq("123");u1.setCreateTime(new Date());u1.setUsername("张三");UserInfoPO u2 = new UserInfoPO();TransferUtils.transferBean(u1,u2);long endTime = System.currentTimeMillis();System.out.println("当前程序耗时:" + (endTime - startTime) + "ms"+"输出u2:}{}"+"\n"+ JSON.toJSONString(u2));

TransferUtils工具类代码如下:

public class TransferUtils {public TransferUtils() {}/***  实体 bean的转换* @param t* @param k* @param <T>* @param <K>*/public static <T, K> void transferBean(T t, K k) {if (null != t && null != k) {BeanCopier bc = BeanCopier.create(t.getClass(), k.getClass(), false);bc.copy(t, k, (Converter) null);}}/*** List 之间的转换* @param tList* @param clazz* @param <T>* @param <K>* @return*/public static <T, K> List<K> transferList(Collection<T> tList, Class<K> clazz) {if (!CollectionUtils.isNotEmpty(tList)) {return null;} else {List<K> kList = new ArrayList();Iterator var3 = tList.iterator();while(var3.hasNext()) {T t = (T) var3.next();Object tk = null;try {tk = clazz.newInstance();} catch (Exception var7) {var7.printStackTrace();return null;}BeanCopier bc = BeanCopier.create(t.getClass(), tk.getClass(), false);bc.copy(t, tk, (Converter)null);kList.add((K) tk);}return kList;}}
}

是Spring内部实现的bean之间的copy,在时间执行上,比BeanUtils要快一些。
代码地址如下:https://github.com/virtuousOne/virtuousone

【Java工具类】之Bean转换相关推荐

  1. 干货:排名前 16 的 Java 工具类!

    2019独角兽企业重金招聘Python工程师标准>>> 干货:排名前 16 的 Java 工具类!   在Java中,工具类定义了一组公共方法,这篇文章将介绍Java中使用最频繁及最 ...

  2. 排名前 16 的 Java 工具类

    转载来自微信公众号:Java 技术栈.如有侵权,请联系作者删除!! 在 Java 中,工具类定义了一组公共方法,这篇文章将介绍 Java 中使用最频繁及最通用的 Java 工具类.以下工具类.方法按使 ...

  3. beanutils工具类_16 个超级实用的 Java 工具类!

    在Java中,工具类定义了一组公共方法,这篇文章将介绍Java中使用最频繁及最通用的Java工具类.以下工具类.方法按使用流行度排名,参考数据来源于Github上随机选取的5万个开源项目源码. 一. ...

  4. java轻量级并行工具类_16 个超级实用的 Java 工具类

    原标题:16 个超级实用的 Java 工具类 源 /juejin 在Java中,工具类定义了一组公共方法,这篇文章将介绍Java中使用最频繁及最通用的Java工具类.以下工具类.方法按使用流行度排名, ...

  5. java 文本工具类_干货:排名前16的Java工具类

    原标题:干货:排名前16的Java工具类 作者丨Java技术栈 https://www.jianshu.com/p/9e937d178203 在Java中,工具类定义了一组公共方法,这篇文章将介绍Ja ...

  6. 干货:排名前16的Java工具类

    image 在Java中,工具类定义了一组公共方法,这篇文章将介绍Java中使用最频繁及最通用的Java工具类.以下工具类.方法按使用流行度排名,参考数据来源于Github上随机选取的5万个开源项目源 ...

  7. 排名前16的Java工具类

    原文:https://www.jianshu.com/p/9e937d178203 在Java中,工具类定义了一组公共方法,这篇文章将介绍Java中使用最频繁及最通用的Java工具类.以下工具类.方法 ...

  8. java xml最火的的工具_几种高效的Java工具类推荐

    本文将介绍了十二种常用的.高效的Java工具类 在Java中,工具类定义了一组公共方法,这篇文章将介绍Java中使用最频繁及最通用的Java工具类. 在开发中,使用这些工具类,不仅可以提高编码效率,还 ...

  9. java 工具类命名_给大家详解16个超级实用的Java工具类

    在Java中,工具类定义了一组公共方法,这篇文章课工场合肥北大青鸟科海校区的袁老师将介绍Java中使用最频繁及最通用的Java工具类,希望对大家有所帮助. 以下工具类.方法按使用流行度排名,参考数据来 ...

  10. java 类型转换 效率_盘点16个有用的Java工具类,显著提升工作效率!

    在Java中,工具类定义了一组公共方法,这篇文章将介绍Java中使用最频繁及最通用的Java工具类.以下工具类.方法按使用流行度排名,参考数据来源于Github上随机选取的5万个开源项目源码. 一. ...

最新文章

  1. python dlib 的安装
  2. 连接超时这种异常怎么处理比较好_Golang中SSH.NewSession超时问题记录
  3. Python每日一练0004
  4. [Leetcode] Integer to Roman
  5. 如何利用ESP8266模块实现远程控制
  6. API通常的url语法
  7. 【linux系统编程】进程间通信:信号中断处理
  8. scrapy 设置随机UA
  9. 完工后的决算书范本_工程决算书范本
  10. 2012年软件开发者薪资调查报告
  11. django Form 效验
  12. 学嵌入式必须掌握的经验
  13. TOPSIS法 —— matlab
  14. Debian 8 安装BtSync
  15. 传统立体匹配相似性测度笔记(更新中)
  16. php表格显示成绩,学生成绩表格展示
  17. 输出一个菱形星星图案
  18. olivettifaces人脸识别之思考
  19. 苏州企业注册商标需要提前做好哪些工作?
  20. Typhon爬取图片

热门文章

  1. postfix+squirrelmail实现邮件服务器
  2. IEEE 浮点数:存储及方式,学习与记录,总结与反思
  3. 0113连接wifi日记
  4. Android12重力感应旋转系统以后灭屏分析
  5. android 虚拟返回键功能_Android返回键功能的实现方法
  6. 《Orange's 一个操作系统的实现》学习笔记--LDT
  7. 网络协议 — IPv6 互联网协议第 6 版
  8. 一个简单的词频分析统计程序
  9. WPS骚操作之嵌入ole对象绑定木马
  10. SAP 物料货架寿命