题
我正在尝试使用 java 将 DO 转换为 DTO,并在开始编写自己的工具之前寻找自动化工具。我只是想知道是否有任何免费工具可用。
解决方案
您可以尝试推土机。
Dozer是Java Bean的Java Bean 递归复制数据的映射器 从一个对象到另一个对象。通常情况下, 这些Java Bean会有所不同 复杂的类型。
Dozer支持简单属性 映射,复杂类型映射, 双向映射, 隐式显式映射,以及 递归映射。这包括 映射集合属性 还需要在元素上进行映射 水平。
其他提示
周围有一些图书馆:
Commons-BeanUtils: :ConvertUtils -> 用于将字符串标量值转换为指定类的对象、将字符串数组转换为指定类的数组的实用方法。
下议院朗: :ArrayUtils -> 对数组、原始数组(如 int[])和原始包装数组(如 Integer[])的操作。
Spring框架: :Spring 对 PropertyEditors 有很好的支持,它也可以用于将对象转换为字符串或从字符串转换。
推土机: :Dozer 是一种功能强大但简单的 Java Bean 到 Java Bean 映射器,它以递归方式将数据从一个对象复制到另一个对象。通常,这些 Java Bean 具有不同的复杂类型。
模型映射器: :ModelMapper 是一个智能对象映射框架,可以自动将对象相互映射。它使用基于约定的方法来映射对象,同时提供简单的重构安全 API 来处理特定用例。
映射结构: :MapStruct 是用于 bean 映射的编译时代码生成器,可在运行时生成快速(不使用反射或类似)、无依赖且类型安全的映射代码。
奥里卡: :Orika 使用字节代码生成以最小的开销创建快速映射器。
塞尔玛: :用于映射的编译时代码生成器
JMapper: :使用注释、XML 或 API 生成 Bean 映射器
斯莫克斯: :Smooks JavaBean Cartridge 允许您从消息数据创建和填充 Java 对象(即将数据绑定到)(建议 超丝蛋白 在评论中)。(不再积极开发)共享转换: :Commons-Convert 旨在提供一个专用于将一种类型的对象转换为另一种类型的任务的单一库。第一阶段将重点关注对象到字符串和字符串到对象的转换。(好像已经死了,最后更新2010年)变形: :Transmorph 是一个免费的 Java 库,用于将一种类型的 Java 对象转换为另一种类型的对象(具有另一个签名,可能是参数化的)。(好像已经死了,最后更新2013年)易兹变形: :EZMorph 是一个简单的 java 库,用于将一个对象转换为另一个对象。它支持基元和对象、多维数组的转换以及 DynaBeans 的转换(似乎已死,最后更新于 2008 年)变形: :Morph 是一个 Java 框架,可以简化应用程序的内部互操作性。当信息流经应用程序时,它会经历多次转换。Morph 提供了实现这些转换的标准方法。(好像已经死了,最后更新2008年)洛伦兹: :洛伦兹是一个通用的对象到对象的转换框架。它提供了一个简单的 API 将一种类型的 Java 对象转换为另一种类型的对象。(好像死了)奥托姆: :使用 OTOM,您可以将任何数据从任何对象复制到任何其他对象。可能性是无止境。欢迎来到“秋天”。(好像死了)
另一位是奥里卡—— https://github.com/orika-mapper/orika
Orika 是一种 Java Bean 映射框架,可将数据(以及其他功能)从一个对象递归复制到另一个对象。在开发多层应用程序时它非常有用。
Orika 专注于尽可能自动化,同时在需要时通过配置和扩展提供定制。
Orika 使开发人员能够:
- 映射复杂且深层结构的对象
- 通过将嵌套属性映射到顶级属性来“展平”或“展开”对象,反之亦然
- 即时创建映射器,并应用自定义来控制部分或全部映射
- 创建转换器以完全控制对象图中任何位置的特定对象集的映射——按类型,甚至按特定属性名称
- 处理代理或增强对象(如 Hibernate 或各种模拟框架的对象)
- 通过一种配置应用双向映射
- 映射到目标抽象类或接口的适当具体类的实例
- 处理反向映射
- 处理超出 JavaBean 规范的复杂约定。
Orika 使用字节代码生成以最小的开销创建快速映射器。
模型映射器 是另一个值得一看的图书馆。ModelMapper 的设计与其他库的不同之处在于:
- 通过智能匹配源和目标属性来自动映射对象模型
- 提供重构安全映射 API,使用实际代码来映射字段和方法,而不是使用字符串
- 利用基于约定的配置来简单处理自定义场景
查看 ModelMapper 网站了解更多信息:
使用Apache commons beanutils:
static void copyProperties(Object dest,Object orig)
-Copy从原始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