
回复
在工作中,我们经常要进行各种对象之间的转换。
PO:persistent object 持久对象,对应数据库中的一条记录VO:view object 表现层对象,最终返回给前端的对象DTO:data transfer object数据传输对象,如dubbo服务之间传输的对象
如果这些对象的属性名相同还好,可以用如下工具类赋值
Spring BeanUtils Cglib BeanCopier 避免使用Apache BeanUtils,性能较差
如果属性名不同呢?如果是将多个PO对象合并成一个VO对象呢?好在有MapStruct神器,可以帮助我们快速转换
在pom文件中加入如下依赖即可
测试效果如下,名字不同且没有指定映射关系的会被设置为null
List类型互转的映射规则会用单个对象的映射规则,看测试效果
我们用SchoolPO和StudentPO来映射SchoolStudentVO
测试例子如下
当然还有其他的骚操作,这里就简单介绍一些比较实用的技巧,有兴趣的可以看官方的example
https://github.com/mapstruct/mapstruct-examples
MapStruct帮你对接口生成了一个实现类,下面就是生成的实现类,从class文件夹中可以看到
文章转载自公众号:Java识堂