字段映射 mapStruct lombok

lomkbok

   1.18.20

      
            org.projectlombok
            lombok
            ${org.projectlombok.version}
            true
        

安装lombok插件

mapstruct

        1.5.5.Final

  
            org.mapstruct
            mapstruct
            ${org.mapstruct.version}
  

在Lombok和​​​​​​mapstruct一起使用时就会有一些冲突

Lombok和MapStruct都是用来简化Java代码的组件,它可以通过AnnotationProcessor在编译时自动生成代码,简化了我们日常开发。

都是编译时通过AnnotationProcessor生成的class文件

然后MapStruct会用到对象中的get、set方法,然后get、set方法又需要lombok来生成。所以我们需要空着这两者工作顺序。

参考:http://t.csdnimg.cn/mNcck

解决:

lombok 1.18.16之后,添加path,必须使用 lombok-mapstruct-binding 插件。

        0.2.0

    
                org.apache.maven.plugins
                maven-compiler-plugin
                3.11.0
                
                    ${java.version}
                    ${java.version}

                    
                        
                            org.mapstruct
                            mapstruct-processor
                            ${org.mapstruct.version}
                        
                        
                            org.projectlombok
                            lombok
                            ${org.projectlombok.version}
                        
                        
                            org.projectlombok
                            lombok-mapstruct-binding
                            ${lombok-mapstruct-binding.version}
                        
                    
                
            

 使用

一对一映射

@Mapper(componentModel = MappingConstants.ComponentModel.SPRING)
public interface OrderMapper {

    @Mapping(target = "bankId", source = "orgId")
    @Mapping(target = "programDetails.days", source = "programDetails.days")
    OrderItemDto infoToOrderItem(Info info);

}

多对一

如两个转换成一个对象

如果与mybatis的mapper冲突,可改为Convert包

会自动生成 OrderConverterImpl  在target中

你可能感兴趣的:(java)