【Java工具类】之Bean转换
由于需要在各个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转换相关推荐
- 干货:排名前 16 的 Java 工具类!
2019独角兽企业重金招聘Python工程师标准>>> 干货:排名前 16 的 Java 工具类! 在Java中,工具类定义了一组公共方法,这篇文章将介绍Java中使用最频繁及最 ...
- 排名前 16 的 Java 工具类
转载来自微信公众号:Java 技术栈.如有侵权,请联系作者删除!! 在 Java 中,工具类定义了一组公共方法,这篇文章将介绍 Java 中使用最频繁及最通用的 Java 工具类.以下工具类.方法按使 ...
- beanutils工具类_16 个超级实用的 Java 工具类!
在Java中,工具类定义了一组公共方法,这篇文章将介绍Java中使用最频繁及最通用的Java工具类.以下工具类.方法按使用流行度排名,参考数据来源于Github上随机选取的5万个开源项目源码. 一. ...
- java轻量级并行工具类_16 个超级实用的 Java 工具类
原标题:16 个超级实用的 Java 工具类 源 /juejin 在Java中,工具类定义了一组公共方法,这篇文章将介绍Java中使用最频繁及最通用的Java工具类.以下工具类.方法按使用流行度排名, ...
- java 文本工具类_干货:排名前16的Java工具类
原标题:干货:排名前16的Java工具类 作者丨Java技术栈 https://www.jianshu.com/p/9e937d178203 在Java中,工具类定义了一组公共方法,这篇文章将介绍Ja ...
- 干货:排名前16的Java工具类
image 在Java中,工具类定义了一组公共方法,这篇文章将介绍Java中使用最频繁及最通用的Java工具类.以下工具类.方法按使用流行度排名,参考数据来源于Github上随机选取的5万个开源项目源 ...
- 排名前16的Java工具类
原文:https://www.jianshu.com/p/9e937d178203 在Java中,工具类定义了一组公共方法,这篇文章将介绍Java中使用最频繁及最通用的Java工具类.以下工具类.方法 ...
- java xml最火的的工具_几种高效的Java工具类推荐
本文将介绍了十二种常用的.高效的Java工具类 在Java中,工具类定义了一组公共方法,这篇文章将介绍Java中使用最频繁及最通用的Java工具类. 在开发中,使用这些工具类,不仅可以提高编码效率,还 ...
- java 工具类命名_给大家详解16个超级实用的Java工具类
在Java中,工具类定义了一组公共方法,这篇文章课工场合肥北大青鸟科海校区的袁老师将介绍Java中使用最频繁及最通用的Java工具类,希望对大家有所帮助. 以下工具类.方法按使用流行度排名,参考数据来 ...
- java 类型转换 效率_盘点16个有用的Java工具类,显著提升工作效率!
在Java中,工具类定义了一组公共方法,这篇文章将介绍Java中使用最频繁及最通用的Java工具类.以下工具类.方法按使用流行度排名,参考数据来源于Github上随机选取的5万个开源项目源码. 一. ...
最新文章
- python dlib 的安装
- 连接超时这种异常怎么处理比较好_Golang中SSH.NewSession超时问题记录
- Python每日一练0004
- [Leetcode] Integer to Roman
- 如何利用ESP8266模块实现远程控制
- API通常的url语法
- 【linux系统编程】进程间通信:信号中断处理
- scrapy 设置随机UA
- 完工后的决算书范本_工程决算书范本
- 2012年软件开发者薪资调查报告
- django Form 效验
- 学嵌入式必须掌握的经验
- TOPSIS法 —— matlab
- Debian 8 安装BtSync
- 传统立体匹配相似性测度笔记(更新中)
- php表格显示成绩,学生成绩表格展示
- 输出一个菱形星星图案
- olivettifaces人脸识别之思考
- 苏州企业注册商标需要提前做好哪些工作?
- Typhon爬取图片