朵小喵儿|七种对象复制工具类,你最看好哪个?( 二 )
为了解决这个问题 , 我们需要自己构造一个 Converter 转换类 , 然后使用 ConvertUtils注册 , 使用方法如下:
ConvertUtils.register(new Converter() {@SneakyThrows@Overridepublic 此时 , 我们观察 studentDO与 studentDTO对象属性值:
从上面的图我们可以得出BeanUtils一些结论:
- 普通字段名不一致的属性无法被复制
- 嵌套对象字段 , 将会与源对象使用同一对象 , 即使用浅拷贝
- 类型不一致的字段 , 将会进行默认类型转化 。
Spring BeanUtilsSpring 属性复制工具类类名与 Apache 一样 , 基本用法也差不多 。 我先来看下 SpringBeanUtils 基本用法 。
同样 , 我们先引入依赖 , 从名字我们可以看出 , BeanUtils 位于 Spring-Beans 模块 , 这里我们依然使用最新模块 。
org.springframework spring-beans5.2.8.RELEASE 这里我们使用 DTO 与 DO 复用上面的例子 , 转换代码如下:// 省略上面赋值代码 , 与上面一致StudentDO studentDO = new StudentDO();BeanUtils.copyProperties(studentDTO, studentDO);从用法可以看到 , Spring BeanUtils 与 Apache 有一个最大的不同 , 两者源对象与目标对象参数位置不一样 , 阿粉之前没注意 , 用了 Spring 工具类 , 但是却是按照 Apache 的用法使用 。此时对比studentDO与 studentDTO对象:
- 字段名不一致 , 属性无法复制
- 类型不一致 , 属性无法复制 。 但是注意 , 如果类型为基本类型以及基本类型的包装类 , 这种可以转化
- 嵌套对象字段 , 将会与源对象使用同一对象 , 即使用浅拷贝
public static void copyProperties(Object source, Object target, String... ignoreProperties) 使用这个方法 , 我们可以忽略某些不想被复制过去的属性:BeanUtils.copyProperties(studentDTO, studentDO,"name");这样 , name 属性就不会被复制到 DO 对象中 。推荐阅读
- 朵小喵儿|2021年迎来考验,美国企业或将再次入局,国产手机
- 朵小喵儿|国产手机,2021年迎来考验,美国企业或将再次入局
- 朵小喵儿|突破旗舰封锁,魅族今年性能旗舰亮新玩法,销量真稳了
- 朵小喵儿|小天才手表背后,是成人世界的焦虑
- 朵小喵儿|主板维修必备!海量主板电路图+CPU程序下载
- 朵小喵儿|如何成为制造大国?曹德旺一语中的:先把“这个”取消再说
- 朵小喵儿|蔚来总部临时办公大楼预计下月启用 位于合肥经开区
- 朵小喵儿|腾讯AI Lab高级研究员宋林峰:图到文本生成任务中的通用型图结构信息保存法
- 朵小喵儿|突发!特朗普政府考虑将国内最大芯片制造商中芯国际列入贸易黑名单
- 朵小喵儿|硬件捡垃圾33期
