java POJO 对象的属性拷贝有没好方法?

DTO、VO 需要转换大量属性,纯手写虽然能够保证属性对应,但实在是费手指,加了字段之后代码分散也不好维护,有没比较好的方法可以自动化一点?

properties·pojo·java
209 views
Comments
登录后评论
Sign In
·

spring boot 自带一个 BeanUtils 类,可以用来批量复制字段值,BeanUtils,用法:

BeanUtils.copyProperties(user, userDTO);

还有拓展方法,第三个参数 ignoreProperties,设置忽略的字段,具体你 ctrl 点击查下文档

·

MapStruct ?

·

这个我专业,有三个方案,先简单说结论

  1. BeanUtils: Spring 框架自带,使用方便,里面使用了全反射操作,性能比下面两种差;
  2. BeanCopier: Cglib 的一个工具类,你用了 Spring 基本可以直接用,内部用了生成字节码的方式,性能很高,跟 MapStruct 接近,使用方式又跟 BeanUtils 差不多;
  3. MapStruct: 性能最高,其实就是利用 Maven 插件生成了代码,生成的代码用 IDE 可以跳进去,跟你手写效果一样,不过使用的时候要配置插件,要专门写个接口,比上面两种方式用起来繁琐一点,对编译阶段有影响,特别你用了 lombok 需要注意一下插件的先后顺序。

至于细节使用,去找官方文档看,我比较喜欢用 BeanCopier