4

Orika を使用してマッピングしたいフィールドが 2 つあります。

 @Override
    public void configure(MapperFactory factory) {
        factory.classMap(ClazzA.class, ClazzB.class)
                .byDefault()
                .field("name", "sname")
                .register();

ClazzB の 3 番目のフィールド「type」が文字列「stk」と一致する場合にのみ、そのフィールド名を sname の値にマップしたいと考えています。

Orikaでも可能ですか?

4

1 に答える 1

6

はい、可能です。通常のフィールド マッピングの後にカスタム マッパーを追加するだけです。

    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(); 
于 2014-07-09T14:31:56.397 に答える