BeanUtils?DozerBeanMapper?复制属性有很多捷径!

前言:提及属性复制相信很多人会想到街头流氓的工具豆制品,通过这个工具里面的方法:BeanUtils.copyProperties可以将一个对象的属性值赋值给另一个对象的属性,从而避免了一堆的集合()方法的烦恼。
另外还有打瞌睡的人工具,通过这个工具mapper mapper=new dozer bean mapper();这里的地图绘制者对象,也可以实现以上的功能,这个看似要比上一个先进一点?
其实两者都有弊端,比如BeanUtils在复制某对象包含属性为本地日期时间类型的时候,就会报错。另外两者都有一个致命的缺点,就是只能复制属性名字相同的字段。那么针对那些字段名称不同的,本文将为你介绍小技巧之mapstruct工具。
正文:上面饶了半天,下面步入正题:
1.引入砰的一声依赖org。映射结构映射结构-JDK 8 1。2 .0 .最终组织。映射结构映射结构-处理器最终版本2新建实体类HydraTemplateItem.javaHydraTemplateItem.java完整代码如下:
包com。bj。九头蛇。实体;导入Java。io。可序列化;@Datapublic类HydraTemplateItem实现可序列化的{私有字符串id私有字符串templateItemCode私有字符串template itemname private static final long serial version uid=1L;}3.新建数据传输对象类StrutsItemTestDTO.javaStrutsItemTestDTO.java完整代码如下:
包com。bj。九头蛇。dto进口龙目岛。数据;导入Java。io。可序列化;导入Java。util。ArrayList导入Java。util。hashset导入Java。util。列表;导入Java。util。设置;/** * 附件项DTO * * @作者@IT讲坛* @日期2018年11月15日20:433:34 */@数据公开类StrutsItemTestDTO实现serializable { private static final long serialVersionUID=4727847538691483366 l;/** * 转换前端的项目用*/私有字符串id;/** * 附件项ID */私有字符串itemID/** *附件项名称*/私有字符串标题;/** * 是否可以传多个附件*/私有布尔倍数;}4.新建接口制图人类HydraTemplateItemConver.javaHydraTemplateItemConver.java完整代码如下
包com。bj。九头蛇。汇编程序;导入com。bj。九头蛇。dto。strutsitemdto导入com。bj。九头蛇。dto。strutsitemtestdto导入com。bj。九头蛇。实体。hydratemplateitem导入org。映射结构。映射器;导入org。映射结构。映射;导入org。映射结构。映射;导入org。映射结构。工厂。制图人员;/* * * * @包: com。bj。九头蛇。汇编程序* @ description :映射结构实体类详细试验目的(详细的测试目标)映射接口* @author: @IT讲坛* @ create : 2018-11-30 15:13 * */@ mapper公共接口HydraTemplateItemConver { HydraTemplateItemConver hyd conver=mappers。获取映射器(HydraTemplateItemConver。类);@ Mappings({ @ Mapping(source=\ ‘ HydraTemplateItem。模板项目代码\ ‘,target=\’itemID\ ‘),@ Mapping(source=\ ‘ HydraTemplateItem。template itemname \ ‘,target=\ ‘ title \ ‘)})strutsitemtestto tostrutsitemtofromthydratemplateitem(HydraTemplateItem);}说明:
上述的意思就是将入参对象hydraTemplateItem的templateItemCode复制给StrutsItemTestDTO对象的模块属性,这里的入参可以包含多个,比如:
@ Mappings({ @ Mapping(source=\ ‘ HydraTemplateItem。templateitemcode \ ‘,target=\’itemID\ ‘),@ Mapping(source=\ ‘ HydraTemplateItem。template itemname \ ‘,target=\’title\ ‘,target=\’multiple\ ‘,target=\ ‘ multiple \ ‘),})strusitem test dto to strutsitemtodofrhodemplateitem(HydraTemplateItem,hydra file hydra file);这里就是将两个入参的属性分别复制给出参dto。
5.新建测试类testMapStruct.javatestMapStruct.java完整代码如下:
包com。bj。九头蛇。控制器;导入com。阿里巴巴。快速JSON。JSON对象;导入com。bj。九头蛇。汇编程序。hydratemplateitemconver导入com。bj。九头蛇。dto。strutsitemtestdto导入com。bj。九头蛇。实体。hydratemplateitem/* * * * @包: com。bj。九头蛇。控制器* @描述:映射结构测试类* @author: @IT讲坛* @ create : 2018-12-03 17:21 * */公共类test map struct { public static void main(String[]args){ HydraTemplateItem item=new HydraTemplateItem();项目。settemplateitemcode(\ ‘测试代码\ ‘);项目。settemplate itemname(\ ‘ testName \ ‘);项目。setid(\ ‘ 1001 \ ‘);StrutsItemTestDTO strutsitemdo=hydratemplateitemconver。液压转换器。tostrutsitemdtofromthydratemplateitem(item);log.info(\’itemDTO:{}\ ‘,JSON对象。tojsonstring(strutsItemDTO));}}6.测试结果运行主要的方法测试结果如下:
技术日新月异,找不找得到捷径,要看同学你勤奋与否。
有关属性拷贝,还有很多种方式:
财产效用。复制属性(obj 1,obj2),
bean复印机副本=bean复印机。create(obj 1,obj2)。。
希望有兴趣的同学,可以往深入多多了解。
关注私信回复(学习)获取最新技术干货,每天都有更新。

其他教程

奶茶试喝员职业(奶茶操作员)

2022-8-31 5:15:10

其他教程

破解了pr可以删了Adobe吗(精通ps,ae,pr的安装与卸载)

2022-8-31 5:17:21

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索