mapstruct使用字节码代码生成而不是反射来实现对象字段映射,效率比较BeanUtils之类的工具高。
使用说明
1、直接使用@Mapper
注解装饰接口,比如:
@Mapper
public interface RoomConvertor {
RoomConvertor INSTANCE = Mappers.getMapper(RoomConvertor.class);
TextCheckRequestDTO convertor(TextCheckRequest req);
TextCheckResponse convertor(TextCheckResponseDTO checkResult);
}
2、使用@Mapping
注解指定source和target字段名称对应关系
@Mapper
public interface IPersonMapper {
IPersonMapper INSTANCT = Mappers.getMapper(IPersonMapper.class);
@Mapping(target = "userNick1", source = "userNick")
UserEntity po2entity(UserPo userPo);
}
3、如果原对象字段和目标对象字段需要转换,可以使用@Mapping
的qualifiedByName
属性 与 @Named
配合,在要被执行的方法上加注解@Named
并指定名称。
@Mapping(source="email", target="userEmail", qualifiedByName="join123")