代码之家  ›  专栏  ›  技术社区  ›  rkr87

重用Mapstruct中的@映射定义

  •  1
  • rkr87  · 技术社区  · 2 年前

    下面的映射程序运行良好,但我想知道是否有任何方法可以定义一次并重用上的重复映射 remoteToNewLocalApp remoteToLocalAppUpdate .

    @Mapper
    interface AppMapper {
    
        @Mapping(target = "appId", source = "atemsPackage.appId", defaultExpression = "java(packageId)")
        @Mapping(target = "appOnRemote", constant = "true")
        fun remoteToNewLocalApp(atemsPackage: AtemsPackage, packageId: String): LocalApp
    
        @Mapping(target = "appId", source = "atemsPackage.appId", defaultExpression = "java(packageId)")
        @Mapping(target = "appOnRemote", constant = "true")
        fun remoteToLocalAppUpdate(atemsPackage: AtemsPackage, packageId: String): LocalAppRemoteUpdate
    
        companion object {
            val INSTANCE: AppMapper =
                Mappers.getMapper(AppMapper::class.java)
        }
    }
    

    更新

    @Mapper
    interface AppMapper {
    
        @Mapping(target = "appId", source = "atemsPackage.appId", defaultExpression = "java(packageId)")
        @Mapping(target = "appOnRemote", constant = "true")
        fun remoteToNewLocalApp(atemsPackage: AtemsPackage, packageId: String): LocalApp
    
        @InheritConfiguration(name = "remoteToNewLocalApp")
        fun remoteToLocalAppUpdate(atemsPackage: AtemsPackage, packageId: String): LocalAppRemoteUpdate
    
        companion object {
            val INSTANCE: AppMapper =
                Mappers.getMapper(AppMapper::class.java)
        }
    }
    
    1 回复  |  直到 2 年前
        1
  •  1
  •   saw303    2 年前

    你可以使用 @InheritConfiguration 关于第二个映射器方法。