java bean 转换工具
考量要素:
1.简单的约定优于配置的同名属性copy
2.嵌套属性copy
3.flattern(扁平化)支持,要支持N层结构的copy到一层结构。
4.性能
如下这个网页,里面提到了好多工具。
http://stackoverflow.com/questions/1432764/any-tool-for-java-object-to-object-mapping
注意到许多工具采用静态化的生成java字节码的方式,这样和hardcode性能所差无几了。
| id | 描述 | 是否支持flattern | 最新版本 | URL |
| Transmorph | 只是不同类型间的互转,和需求相去胜远 | N | 3.1.3 | https://github.com/cchabanois/transmorph |
| Commons-Lang | ArrayUtils也只是不同类型间的互转 | N | 3.1 | http://commons.apache.org/proper/commons-lang/javadocs/api-release/org/apache/commons/lang3/ArrayUtils.html |
| Commons-Convert | 也只是不同类型间的互转,目前在apache的sandbox里 | N | 1.0-SNAPSHOT | http://commons.apache.org/sandbox/commons-convert |
| Spring framework | PropertyEditors也只是不同类型间的互转 | N | ||
| EZMorph | 能同类型同名属性批量copy | N | 1.0.6 | http://sourceforge.net/projects/ezmorph/ |
| Commons-BeanUtils | BeanUtils只能同类型同名属性批量copy,PropertyUtils可以用类似ognl表达式copy嵌套的属性,但这个东西的性能被吐槽不好 | Y | 1.8.3 | http://commons.apache.org/proper/commons-beanutils/ |
| Morph | 没找到文档 | 1.1.1 | http://sourceforge.net/projects/morph/ | |
| Lorentz | 似乎死了 | |||
| OTOM | "Autumn"没找到文档 | https://java.net/projects/otom | ||
| Smooks | 没找到文档,貌似可以多种格式比如csv,java bean,jms消息互转,不是我们的需求场景 | https://github.com/smooks/smooks http://www.infoq.com/cn/articles/event-streaming-with-smooks | ||
| JMapper | 支持annotaion描述映射 | N | 1.2 | http://code.google.com/p/jmapper-framework/ |
| cglib | BeanCopier, BulkBean,BeanMap,FastClass/FastMethod 采用生成字节码的方法,性能相当的高 | N | 2.3 | sourceforge.net/projects/cglib |
| ognl | ognl表达式肯定功能强大 | Y | 4.0-SNAPSHOT | http://commons.apache.org/proper/commons-ognl/ |
| mapping4java | 国人造的一个轮子,性能不错 | N | 1.0 | http://code.google.com/p/mapping4java/ |
| Dozer | 貌似功能比较强大,可通过xml来配置映射,但性能不行 | Y | 5.4 | https://github.com/DozerMapper/dozer |
| Orika | 一个新秀,比Dozer性能好,可以一试,但没找到配xml的方法 | Y | 1.4.2 | http://orika-mapper.github.io/orika-docs/index.html |
| ModelMapper | 采用约定优于配置的方式自动映射 | Y | 0.5.6 | http://modelmapper.org |
java bean 转换工具的更多相关文章
- 我的Android进阶之旅------>Java文件大小转换工具类 (B,KB,MB,GB,TB,PB之间的大小转换)
Java文件大小转换工具类 (B,KB,MB,GB,TB,PB之间的大小转换) 有时候要做出如下所示的展示文件大小的效果时候,需要对文件大小进行转换,然后再进行相关的代码逻辑编写. 下面是一个Java ...
- java 常用Bean 转换工具类
package com.hnf.framework.utils; import com.alibaba.fastjson.JSON; import com.fasterxml.jackson.data ...
- java json转换工具类
在java项目中,通常会用到json类型的转换,常常需要对 json字符串和对象进行相互转换. 在制作自定义的json转换类之前,先引入以下依赖 <!--json相关工具--><de ...
- java 图片转换工具
package com.sicdt.sicsign.web.utils; import java.awt.Graphics2D; import java.awt.image.BufferedImage ...
- jxcel - 好用的Excel与Java对象转换工具
更多精彩博文,欢迎访问我的个人博客 Jxcel简介 Jxcel是一个支持Java对象与Excel(目前仅xlsx.xls)互相转换的工具包. 项目地址:https://github.com/jptan ...
- Java Bean拷贝工具Orika原理解析
最近面试被问及对象拷贝怎样才能高效,实际上问的就是Orika或者BeanCopier的原理.由于网上对Orika原理的解析并不太多-因此本文重点讲解一下Orika的原理.(Orika是基于JavaBe ...
- 工具类--BeanUtils----Bean转换工具
package com.zhouyy.netBank.util; import java.beans.PropertyDescriptor; import java.lang.reflect.Fiel ...
- Java bean和json互转时,屏蔽某个属性
有的时候我们把java bean 转换成json的时候,希望屏蔽掉某个属性,这时可以在java bean的属性上加上@JsonIgnore注解,在com.fasterxml.jackson.annot ...
- JAVA -JSON-XML-MAP转换
//定义一个MAP对象,将对象传给后端接口接收 Map a = ["api": '11', ZGUID: "1231",BESKZ: "1231& ...
随机推荐
- jquery.SuperSlide.2.1.2--轮播(兼容到IE7 适用于整屏)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xht ...
- python学习------dictionary和set
一.dictionary 1.字典的形式:a={‘key’:value,‘key1’:value,................} 2.字典的的key不能重复,是一个不可变对象 3.字典的的查找和添 ...
- 浮动框控制及切换、banner随机数js
1.浮动置控制及切换 <div class="banner1"></div><div class="bot_banner"> ...
- MVC5 + EF6 入门完整教程一:从0开始
第0课 从0开始 ASP.NET MVC开发模式和传统的WebForm开发模式相比,增加了很多"约定". 直接讲这些 "约定" 会让人困惑,而且东西太多容易忘记 ...
- spring随手笔记4:ref的属性
1.local属性 引用在同一个xml的bean 只能引用bean的id <bean id="HelloWord" class="com.ltf ...
- PDF 补丁丁 0.4.2.905 测试版发布:智能合并功能减小合并文件的大小
之前的测试版在合并文件功能处添加两个相同的PDF文件,程序会重复写入该文件的内容,导致文件体积膨胀,浪费存储空间. 例如:使用者需要在原 PDF 文件(设文件为1.pdf)第2和第3页中间插入几张图片 ...
- WCF初探-6:WCF服务配置
WCF服务配置是WCF服务编程的主要部分.WCF作为分布式开发的基础框架,在定义服务以及定义消费服务的客户端时,都使用了配置文件的方法.虽然WCF也提供硬编程的方式,通过在代码中直接设置相关对象的属性 ...
- mybatis.net insert 返回主键
mybatis insert语句 <insert id="Add" parameterClass="UserInfo" resultClass=" ...
- C++二进制文件中读写bitset
这个比较简单,直接上代码: bitset< > *b = >(); bitset< > *c = >(); ofstream out("I:\\test. ...
- python leetcode 日记 --Contains Duplicate II --219
题目: Given an array of integers and an integer k, find out whether there are two distinct indices i a ...