不同对象 相同字段 之间的映射(mapStruct)
mapStruct使用优点:
1)可以实现深拷贝。进行配置(使用@mapper(mappingControl=DeepClone.class)进行设置)
2)可以进行自定义的映射。例如:将两个属性数据合并成一个设置到目标属性上
使用方法及示例:
1)添加jar包。
<!-- 注:jdk8以下就使用mapstruct -->
<dependency>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct-jdk8</artifactId>
<version>1.2.0.Final</version>
</dependency>
<!--注解处理器-->
<dependency>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct-processor</artifactId>
<version>1.2.0.Final</version>
</dependency>
2)新建一个接口,处理不同对象的属性之间的映射。
//加上componentModel = "spring",使用时可通过@Autowired的方式使用该接口中的属性映射方法
@Mapper(componentModel = "spring")
public interface ConvertEntity {
/**
* 声明一个成员变量。除了通过@Autowired的方式,还可以通过接口.成员变量.方法的方式使用属性映射方法
*/
ConvertEntity INSTANCE = Mappers.getMapper(ConvertEntity.class);
/**
* peoson中与student中相同的属性会进行赋值。不同的属性会将name赋值给stuName。会忽略age的赋值。
*/
@Mapping(source = "person.name", target = "stuName")
@Mapping(target = "person.hobby", ignore = true)
@Mapping(expression = "java(com.aiit.util.StringUtils.covertString(person.age()))", target = "stFlag")
Student toConvertStu(Person person);
}
与之类似的方法还有:
1)Orika 可参考:https://www.cnblogs.com/fuzongle/p/12609063.html
2)导入包:import org.springframework.beans.BeanUtils;
//将object1的值赋值到object2上
BeanUtils.copyProperties(object1,object2);
浙公网安备 33010602011771号