1,直接用现成的库如:Cglib的BeanCopier
依赖
BeanCopier支持两种方式拷贝:
1,简单拷贝,仅对两个bean间属性名和类型完全相同的变量进行拷贝;
2,自定义Converter的拷贝,可以对某些特定属性值进行特殊转换操作后拷贝
简单拷贝:
只要字段类型和名称相同就能直接拷贝:
结果
如果需要对集合数据进行拷贝,比如List,Map,可以自己封装个工具类。
测试
结果
当源和目标的属性有名称相同但类型不同时,可以自定义Converter。但是自定义以后,所有类型都需要做匹配。
假设有属性需要把String匹配到整数
然后执行代码:
2.自己写映射
mapstruct大材小用自己写映射方式:
然后
然后 实现接口
测试
这种方式,可以设计一下引入策略模式,然后配合配置文件来切换策略。