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、如果原对象字段和目标对象字段需要转换,可以使用@MappingqualifiedByName属性 与 @Named配合,在要被执行的方法上加注解@Named并指定名称。

@Mapping(source="email", target="userEmail", qualifiedByName="join123")

参考