我想弄清楚一个简单的方法来将DTO映射到没有boiler-plate代码的实体。虽然我想使用推土机,但似乎需要大量的xml配置。有没有人看到使用DSL来配置纯Java中的bean映射的推土机替代品?替代推土机的bean映射?
理想情况下,我希望找到一种受Guice方式启发的bean映射器。
我想弄清楚一个简单的方法来将DTO映射到没有boiler-plate代码的实体。虽然我想使用推土机,但似乎需要大量的xml配置。有没有人看到使用DSL来配置纯Java中的bean映射的推土机替代品?替代推土机的bean映射?
理想情况下,我希望找到一种受Guice方式启发的bean映射器。
我正在寻找替代品。
Here是一个很好的覆盖不同的选项。
看看Orika。
Orika是一个Java Bean映射框架,递归地将数据从一个对象复制到另一个对象。在开发多层应用程序时它可能非常有用。
Orika为我完成了这项工作,没有多少努力就处理了集合映射案例。非常强大和可用的库IMO。 – 2017-01-04 06:50:19
从我的角度来看,映射某些特殊属性的配置或java代码总是需要的。
在这里,我想借此DO
和DTO
例如
DO:{
id: "id",
name:"name",
doName1: "doName1",
nestedObj: {
id: "nestedObjId",
name: "nestedObjName"
}
}
DTO{
id: "",
name: "",
name1: "" // for mapping doName1 in DO.
nestedId: "", //for DT.nestObj.id
nestedName: "", //for DT.nestObj.name
}
对于推土机或Orika它们都可以自动匹配DO和DTO之间的id和name属性无需任何配置或Java代码,因为它们与相同的属性名称和类型。 但是如果你想要DO.doName1
< ---->DTO.name1
或DO.nestedObj.id
< --->DTO.nestedId
你需要做一些配置(通过xml或java)来告诉你打算做的那个映射工具。 我认为你的使用案例,Dozer,Orika和ModelMapper都可以。但对我而言,我将我的项目从推土机改为Orika,以达到性能目的。虽然Orika不像推土机那么成熟,但不那么智能,并且需要我做很多额外的工作来维护我自定义的地图配置。 如果你的项目不太关心性能,我会推荐你推土机,它很容易使用并支持如此多的高级功能。否则,如果你购买高性能,我建议你orika。
另一种选择是http://jtransfo.org/。这允许使用TO上的注释来定义映射。它具有附加功能,您可以根据标签进行安全/可选转换。 – 2013-07-08 09:37:00
看看https://github.com/amgohan/zebra/ :(DIY对象映射,并使用斑马为统一的方式来注入mappers。) 斑马来一个简单和统一的方式来: 创建您的mappers; 管理一个类中的单向和反向映射; 注册您的映射器并在您的应用程序的任何位置重新使用它们; 管理深度映射。 – amgohan 2015-05-29 12:56:48
这是一个很好的选择:http://modelmapper.org/ – cosbor11 2015-08-20 02:57:33