我试图使用Java将DO转换为DTO,并在开始编写自己的工具之前寻找自动化工具。我只是想知道是否有可用的免费工具。
我试图使用Java将DO转换为DTO,并在开始编写自己的工具之前寻找自动化工具。我只是想知道是否有可用的免费工具。
Answers:
您可以尝试推土机。
Dozer是Java Bean到Java Bean的映射器,可将数据从一个对象递归复制到另一个对象。通常,这些Java Bean将具有不同的复杂类型。
推土机支持简单属性映射,复杂类型映射,双向映射,隐式-显式映射以及递归映射。这包括映射集合属性,这些属性也需要在元素级别进行映射。
周围有一些图书馆:
Commons-BeanUtils:ConvertUtils->实用程序方法,用于将String标量值转换为指定Class的对象,将String数组转换为指定Class的数组。
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:使用注释,XML或API生成Bean映射器(似乎已失效,最近更新为2年)
Smooks的:在Smooks的JavaBean的墨盒,您可以创建和填充从你的消息数据的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,您可以将任何数据从任何对象复制到任何其他对象。可能性是无止境。欢迎来到“秋天”。(似乎已死)
另一个是Orika- https://github.com/orika-mapper/orika
Orika是Java Bean映射框架,它(除其他功能外)将数据从一个对象递归复制到另一个对象。在开发多层应用程序时,它非常有用。
Orika致力于尽可能地自动化,同时在需要时通过配置和扩展提供自定义。
Orika使开发人员能够:
- 映射复杂且结构化的对象
- 通过将嵌套属性映射到顶级属性来“平展”或“扩展”对象,反之亦然
- 动态创建映射器,并应用自定义项来控制部分或全部映射
- 创建转换器以完全控制对象图中任意位置的一组特定对象的映射-按类型,甚至按特定属性名称
- 处理代理或增强的对象(例如Hibernate的对象或各种模拟框架)
- 通过一种配置应用双向映射
- 映射到目标抽象类或接口的适当具体类的实例
- 处理反向映射
- 处理JavaBean规范以外的复杂约定。
Orika使用字节码生成以最小的开销创建快速的映射器。
ModelMapper是另一个值得检查的库。ModelMapper的设计与其他库的不同之处在于:
请访问ModelMapper网站以获取更多信息:
还有一个Java映射引擎/框架Nomin:http : //nomin.sourceforge.net。
我建议您尝试使用JMapper Framework。
它是Java Bean到Java Bean的映射器,允许您使用注释和/或XML动态执行数据传递。
使用JMapper,您可以:
我很高兴将Moo添加为一个选项,尽管显然我对此有偏见:http : //geoffreywiseman.github.com/Moo/
对于简单的案例来说,它非常容易使用,对于更复杂的案例,它具有合理的能力,尽管我仍然可以想象在某些领域中进一步增强它的复杂性。
您也可以尝试基于Dozer的映射框架,但是要使用Excel映射声明。他们有一些工具和其他很棒的功能。查看http://openl-tablets.sf.net/mapper
new ObjectMapper().convertValue(...)
。杰克逊还支持注释和注释混合,因此我发现它是一个很好的选择。