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
时间: 2024-10-12 13:24:45

java bean 转换工具的相关文章

常用的Java字符转换工具类

该类里包含了Java中常用的字符串处理方法,如日期处理.金额转换... ----------------------------------------------------------------------------------------- import java.math.BigDecimal;import java.sql.Timestamp;import java.text.SimpleDateFormat;import java.util.Calendar;import jav

JAVA 编码格式转换工具类

package com.gootrip.util; import java.io.UnsupportedEncodingException; /** * <p>Title:字符编码工具类 </p> */ public class CharTools { /** * 转换编码 ISO-8859-1到GB2312 * @param text * @return */ public static final String ISO2GB(String text) { String resu

java 文件格式转换工具

有时候一个文件格式正确在某些情况下不一定能够正确播放,下面可以借助于java的一个类帮助我们把文件格式转正确 File source = new File(filepath); int index=amr.lastIndexOf("."); wavFile=amr.substring(0,index)+".wav"; File target = new File(wavFile); AudioAttributes audio = new AudioAttribute

java 图片转换工具

package com.sicdt.sicsign.web.utils; import java.awt.image.BufferedImage; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileNotFoundException; import java.io.IOException; import javax.i

Java bean转换map

/** * * @Title: convertMap * @Description: 使用泛型Map转bean * 首先先把传入的实体bean的类型通过反射实例化,获取该bean的所有方法. * 遍历map的所有的key,将key首字母变大写,前缀添加set,得到方法名 * 然后遍历bean的所有方法,如果有方法名和map的可以拼接的方法名一致, * 就将map的value插入bean中(前提是类型必须是一致,否则报错) * @param @param <T> * @param @param

分享万能java字符串编码转换工具类

代码下载地址:http://www.zuidaima.com/share/1795356301560832.htm 原文:分享万能java字符串编码转换工具类 package com.zuidaima.util; import java.io.UnsupportedEncodingException; /** * 转换字符串的编码 */ public class ChangeCharset { /** 7位ASCII字符,也叫作ISO646-US.Unicode字符集的基本拉丁块 */ publ

JAVA之旅(一)——基本常识,JAVA概念,开发工具,关键字/标识符,变量/常量,进制/进制转换,运算符,三元运算

JAVA之旅(一)--基本常识,JAVA概念,开发工具,关键字/标识符,变量/常量,进制/进制转换,运算符,三元运算 Android老鸟重新学一遍JAVA是什么感觉?枯燥啊,乏味啊,而且归纳写博客,都是很痛苦的事情,但是程序之路这么长,你必须精通的不能再精通一门语言才行(有点说大了哈),但是最起码你要如鱼得水吧,我准备的资料有: JAVA编程思想 深入浅出JAVA 黑马,传智,慕课,极客学院等-的视频 Google搜索 我们既然是重新学一遍,那我们尽量就是用记事本去敲代码好了,这里我用notep

java 中文繁简体转换工具 opencc4j

创作缘由 对于中文的繁简体转换是一种很常见的需求. 但是很多工具类都是简单的做个映射.(使用map,集合,properties)等. 存在一个严重的问题:特殊词组 的转换可能存在问题. OpenCC OpenCC 是一款非常优秀的转换工具.但是没有直接提供 Java 便于使用的 jar. opencc4j opencc4j 就是在上面的工具基础上提供的 java 使用版本. opencc4j 使用方式 maven 引入 <dependency> <groupId>com.githu

java 实体对象与Map之间的转换工具类(自己还没看)

java实体对象与Map之间的转换工具类 import java.lang.reflect.Field; import java.util.HashMap; import java.util.Map; public class EntityUtils { /** * 实体类转Map * @param object * @return */ public static Map<String, Object> entityToMap(Object object) { Map<String,