最近開發(fā)項(xiàng)目的時(shí)候需要用到對(duì)象的屬性拷貝,以前也有用過一些復(fù)制框架,比如spring的 BeanUtils.copyProperties等方式,但總是不盡如人意,最近發(fā)現(xiàn)使用orika進(jìn)行對(duì)象拷貝挺好用的分享出來給大家。
先看一下接入步驟,以springboot集成orika為例。
1.maven引入orika
<dependency>
<groupId>ma.glasnost.orika</groupId>
<artifactId>orika-core</artifactId>
</dependency>
2.編寫orika配置類
@Configuration
public class MappperFactoryConfig {
@Bean
public MapperFactory getFactory(){
MapperFactory mapperFactory = new DefaultMapperFactory.Builder().build();
return mapperFactory;
}
}
3.使用方式,首先注入MapperFactory,方法里就能直接使用了
Autowired
private MapperFactory mapperFactory;
void test(){
A a = new A();
//用法1,生成新的類對(duì)象
B b = mapperFactory.getMapperFacade().map(a, B.class);
//用法2,對(duì)象間復(fù)制
Object s1 = new Object();
Object d1 = new Object();
mapperFactory.getMapperFacade().map(s1,d1);
//其他用法...
}
復(fù)制的對(duì)象可以是不同類型,如果復(fù)制的屬性名稱不一致,可以通過修改第2步的配置映射兩個(gè)類的屬性(只需要配置不一致的屬性即可)。
@Configuration
public class MappperFactoryConfig {
@Bean
public MapperFactory getFactory(){
MapperFactory mapperFactory = new DefaultMapperFactory.Builder().build();
mapperFactory.classMap(A.class, B.class)
.field("name", "nickName") //不一致屬性映射
.exclude("createTime") //排除復(fù)制屬性
.byDefault()
.register();
return mapperFactory;
}
}
這里只介紹了簡單的用法示例,orika還提供了豐富的復(fù)制方法,包括單對(duì)象和集合的復(fù)制等。
方法列表
想了解更多內(nèi)容可以去orika的官方地址查看:「鏈接」
https://orika-mApper.github.io/orika-docs/。
官網(wǎng)






