Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/351.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Orika-仅当第三个字段与字符串匹配时映射两个字段_Java_Mapping_Orika - Fatal编程技术网

Java Orika-仅当第三个字段与字符串匹配时映射两个字段

Java Orika-仅当第三个字段与字符串匹配时映射两个字段,java,mapping,orika,Java,Mapping,Orika,我有两个字段要使用Orika进行映射 @Override public void configure(MapperFactory factory) { factory.classMap(ClazzA.class, ClazzB.class) .byDefault() .field("name", "sname") .register(); 仅当ClazzB中的第三个字段“t

我有两个字段要使用Orika进行映射

 @Override
    public void configure(MapperFactory factory) {
        factory.classMap(ClazzA.class, ClazzB.class)
                .byDefault()
                .field("name", "sname")
                .register();
仅当ClazzB中的第三个字段“type”与字符串“stk”匹配时,我才想将该字段名映射到sname中的值


使用Orika可能吗?

是的,可能。只需在常规字段映射之后添加自定义映射器

    factory.classMap(ClazzA.class, ClazzB.class)
                .field("name", "sname")
                .byDefault()
                .customize(new CustomMapper<ClazzA, ClazzB>() {
                    @Override
                    public void mapBtoA(ClazzB clazzB, ClazzA clazzA, MappingContext context) {
                        if ("stk".equals(clazzB.getType())) {
                            clazzA.setName(clazzB.getSName());
                        }
                    }                   
                }
                .register(); 
factory.classMap(ClazzA.class,ClazzB.class)
.field(“名称”、“sname”)
.默认情况下()
.customize(新的CustomMapper(){
@凌驾
public void mapBtoA(ClazzB ClazzB,ClazzA ClazzA,MappingContext上下文){
if(“stk”.equals(clazzB.getType())){
setName(clazzB.getSName());
}
}                   
}
.register();