Orika简单使用
项目中常常需要对象拷贝,Orika可避免getter、setter方法太多,代码臃肿,耗时等问题
- maven依赖
<dependency>
<groupId>ma.glasnost.orika</groupId>
<artifactId>orika-core</artifactId>
<version>1.5.2</version>
</dependency>
javaBean
@Data
public class A {
private String name;
private Integer age;
}
@Data
public class B {
private String name;
private Integer bAge;
}
demo
public class OrikaTest {
public static void main(String[] args) {
MapperFactory mapperFactory = new DefaultMapperFactory.Builder().build();
A a = new A();
a.setName("张三");
a.setAge(18);
//相同属性
B b1 = mapperFactory.getMapperFacade().map(a,B.class);
System.out.println(b1);// B(name=张三, bAge=null)
//不同属性
mapperFactory.classMap(A.class,B.class).field("age","bAge").byDefault().register();
B b2 = mapperFactory.getMapperFacade().map(a,B.class);
System.out.println(b2); //B(name=张三, bAge=18)
//list
List<A> aList = new ArrayList<>();
for(int i = 0; i < 5; i++){
A a1 = new A();
a1.setName("zs"+ i);
a1.setAge(i);
aList.add(a1);
}
mapperFactory.classMap(A.class,B.class).field("age","bAge").byDefault().register();
List<B> bList = mapperFactory.getMapperFacade().mapAsList(aList,B.class);
bList.forEach(b -> {System.out.println(bList);});
// [B(name=zs0, bAge=0), B(name=zs1, bAge=1), B(name=zs2, bAge=2), B(name=zs3, bAge=3), B(name=zs4, bAge=4)]
//[B(name=zs0, bAge=0), B(name=zs1, bAge=1), B(name=zs2, bAge=2), B(name=zs3, bAge=3), B(name=zs4, bAge=4)]
//[B(name=zs0, bAge=0), B(name=zs1, bAge=1), B(name=zs2, bAge=2), B(name=zs3, bAge=3), B(name=zs4, bAge=4)]
//[B(name=zs0, bAge=0), B(name=zs1, bAge=1), B(name=zs2, bAge=2), B(name=zs3, bAge=3), B(name=zs4, bAge=4)]
//[B(name=zs0, bAge=0), B(name=zs1, bAge=1), B(name=zs2, bAge=2), B(name=zs3, bAge=3), B(name=zs4, bAge=4)]
}
}
其他用法参考:Java Code Examples for ma.glasnost.orika.impl.DefaultMapperFactory