我正在尝试使用 java 将 DO 转换为 DTO,并在开始编写自己的工具之前寻找自动化工具。我只是想知道是否有任何可用的免费工具。
9 回答
周围有一些图书馆:
Commons-BeanUtils : ConvertUtils -> 实用方法,用于将字符串标量值转换为指定类的对象,将字符串数组转换为指定类的数组。
Commons-Lang : ArrayUtils -> 对数组、原始数组(如 int[])和原始包装器数组(如 Integer[])的操作。
Spring 框架:Spring 对 PropertyEditor 提供了极好的支持,它也可以用于将对象转换为字符串/从字符串转换。
Dozer:Dozer 是一个强大而简单的 Java Bean 到 Java Bean 映射器,它递归地将数据从一个对象复制到另一个对象。通常,这些 Java Bean 将具有不同的复杂类型。
ModelMapper:ModelMapper 是一个智能对象映射框架,可以自动将对象相互映射。它使用基于约定的方法来映射对象,同时提供简单的重构安全 API 来处理特定用例。
MapStruct:MapStruct 是 bean 映射的编译时代码生成器,可在运行时生成快速(不使用反射或类似的)、无依赖和类型安全的映射代码。
Orika:Orika 使用字节码生成以最小的开销创建快速映射器。
Selma:用于映射的编译时代码生成器
JMapper : 使用 Annotation、XML 或 API 生成 Bean 映射器(似乎已死,最后更新于 2 年前)Smooks:Smooks JavaBean Cartridge 允许您从消息数据创建和填充 Java 对象(即将数据绑定到)(由superfilin在注释中建议)。(不再处于积极开发中)Commons-Convert:Commons-Convert 旨在提供一个单一的库,专门用于将一种类型的对象转换为另一种类型的任务。第一阶段将关注对象到字符串和字符串到对象的转换。(似乎死了,最后一次更新 2010)Transmorph:Transmorph 是一个免费的 Java 库,用于将一种类型的 Java 对象转换为另一种类型的对象(带有另一个签名,可能是参数化的)。(似乎死了,最后一次更新 2013)EZMorph:EZMorph 是一个简单的 java 库,用于将一个对象转换为另一个对象。它支持基元和对象的转换,多维数组和 DynaBeans 的转换(似乎已死,最后更新于 2008 年)Morph:Morph 是一个 Java 框架,可简化应用程序的内部互操作性。当信息流经应用程序时,它会经历多次转换。Morph 提供了实现这些转换的标准方法。(似乎死了,最后一次更新 2008)Lorentz:Lorentz 是一个通用的对象到对象的转换框架。它提供了一个简单的 API 来将一种类型的 Java 对象转换为另一种类型的对象。(好像死了)OTOM:使用 OTOM,您可以将任何数据从任何对象复制到任何其他对象。可能性是无止境。欢迎来到“秋天”。(好像死了)
你可以试试推土机。
Dozer 是一个 Java Bean 到 Java Bean 的映射器,它递归地将数据从一个对象复制到另一个对象。通常,这些 Java Bean 将具有不同的复杂类型。
Dozer 支持简单属性映射、复杂类型映射、双向映射、隐式-显式映射以及递归映射。这包括映射集合属性,这些属性也需要在元素级别进行映射。
另一个是 Orika - https://github.com/orika-mapper/orika
Orika 是一个 Java Bean 映射框架,它可以递归地将数据从一个对象复制到另一个对象。它在开发多层应用程序时非常有用。
Orika 专注于尽可能实现自动化,同时在需要时通过配置和扩展提供定制。
Orika 使开发人员能够:
- 映射复杂和深度结构化的对象
- 通过将嵌套属性映射到顶级属性来“展平”或“扩展”对象,反之亦然
- 即时创建映射器,并应用自定义来控制部分或全部映射
- 创建转换器以完全控制对象图中任意位置的一组特定对象的映射——按类型,甚至按特定属性名称
- 处理代理或增强对象(如 Hibernate 或各种模拟框架)
- 使用一种配置应用双向映射
- 映射到目标抽象类或接口的适当具体类的实例
- 处理反向映射
- 处理超出 JavaBean 规范的复杂约定。
Orika 使用字节码生成以最小的开销创建快速映射器。
ModelMapper是另一个值得一试的库。ModelMapper 的设计与其他库的不同之处在于:
- 通过智能匹配源和目标属性自动映射对象模型
- 提供重构安全映射 API,它使用实际代码来映射字段和方法,而不是使用字符串
- 利用基于约定的配置来简单处理自定义场景
查看 ModelMapper 网站了解更多信息:
使用 Apache commons beanutils:
static void copyProperties(Object dest, Object orig)
- 对于属性名称相同的所有情况,将属性值从源 bean 复制到目标 bean。
还有一个 Java 映射引擎/框架 Nomin: http: //nomin.sourceforge.net。
我建议你试试JMapper 框架。
它是一个 Java bean 到 Java bean 的映射器,允许您使用注释和/或 XML 动态执行数据的传递。
使用 JMapper,您可以:
- 创建和丰富目标对象
- 将特定逻辑应用于映射
- 自动管理 XML 文件
- 实现 1 对 N 和 N 对 1 关系
- 实现显式转换
- 应用继承的配置
我很高兴将 Moo 添加为一个选项,但显然我偏向于它: http: //geoffreywiseman.github.com/Moo/
对于简单的情况,它非常容易使用,对于更复杂的情况也很合理,尽管我仍然可以想象在某些领域可以增强它以应对更复杂的情况。
您也可以尝试基于 Dozer 的映射框架,但使用 Excel 映射声明。他们有一些工具和其他很酷的功能。检查http://openl-tablets.sf.net/mapper