朵小喵儿|七种对象复制工具类,你最看好哪个?( 四 )
阿粉刚碰到这个工具类 , 就被深深折服 , 真的太强大了 , 上面我们期望的功能 , Dozer 都给你实现了 。
下面我们来看下使用方法 , 首先我们引入 Dozer 依赖:
使用方法如下:
// 省略属性的代码DozerBeanMapper mapper = new DozerBeanMapper();StudentDO studentDO =mapper.map(studentDTO, StudentDO.class);System.out.println(studentDO);Dozer 需要我们新建一个DozerBeanMapper , 这个类作用等同于 BeanUtils , 负责对象之间的映射 , 属性复制 。
画外音:下面的代码我们可以看到 , 生成 DozerBeanMapper实例需要加载配置文件 , 随意生成代价比较高 。 在我们应用程序中 , 应该使用单例模式 , 重复使用DozerBeanMapper 。
如果属性都是一些简单基本类型 , 那我们只要使用上面代码 , 可以快速完成属性复制 。
不过很不幸 , 我们的代码中有字符串与 Date 类型转化 , 如果我们直接使用上面的代码 , 程序运行将会跑出异常 。
所以这里我们要用到 Dozer 强大的配置功能 , 我们总共可以使用下面三种方式:
- XML
- API
- 注解
XML 使用方式下面我们使用 XML 配置方式 , 配置 DTO 与 DO 关系 , 首先我们新建一个 dozer/dozer-mapping.xml 文件:
com.just.doone.example.domain.StudentDTO com.just.doone.example.domain.StudentDO nonumber createDatecreateDate 然后修改我们的 Java 代码,增加读取 Dozer 的配置文件:DozerBeanMapper mapper = new DozerBeanMapper();List mappingFiles = new ArrayList<>();// 读取配置文件mappingFiles.add("dozer/dozer-mapping.xml");mapper.setMappingFiles(mappingFiles);StudentDO studentDO = mapper.map(studentDTO, StudentDO.class);System.out.println(studentDO);运行之后 , 对比studentDO与 studentDTO对象:- 类型不一致的字段 , 属性被复制
- DO 与 DTO 对象字段不是同一个对象 , 也就是深拷贝
- 通过配置字段名的映射关系 , 不一样字段的属性也被复制
推荐阅读
- 朵小喵儿|2021年迎来考验,美国企业或将再次入局,国产手机
- 朵小喵儿|国产手机,2021年迎来考验,美国企业或将再次入局
- 朵小喵儿|突破旗舰封锁,魅族今年性能旗舰亮新玩法,销量真稳了
- 朵小喵儿|小天才手表背后,是成人世界的焦虑
- 朵小喵儿|主板维修必备!海量主板电路图+CPU程序下载
- 朵小喵儿|如何成为制造大国?曹德旺一语中的:先把“这个”取消再说
- 朵小喵儿|蔚来总部临时办公大楼预计下月启用 位于合肥经开区
- 朵小喵儿|腾讯AI Lab高级研究员宋林峰:图到文本生成任务中的通用型图结构信息保存法
- 朵小喵儿|突发!特朗普政府考虑将国内最大芯片制造商中芯国际列入贸易黑名单
- 朵小喵儿|硬件捡垃圾33期
