Orika是一個簡單、快速的JavaBean拷貝框架,它能夠遞歸地將數據從一個JavaBean複製到另一個JavaBean,這在多層應用開發中是非常有用的
Orika爲開發者提供瞭如下功能:
1.映射覆雜的、深層次結構性對象。
2.通過將嵌套屬性映射到頂級屬性,“壓平”或“展開”對象,反之亦然。
3.自動創建映射,並且在部分或所有映射上自定義。
4.創建轉換器,以完全控制對象圖中的任何特定對象集合的映射——按類型,甚至是通過特定的屬性名。
5.處理代理或增強對象(如Hibernate或各種模擬框架)
6.用一個配置應用雙向映射。
7.爲一個目標抽象類或接口映射到具體的實現類。
8.映射POJO屬性到Lists, Arrays, and Maps。
pom.xml添加相關的依賴,並進行加載
<!--orika -->
<dependency>
<groupId>ma.glasnost.orika</groupId>
<artifactId>orika-core</artifactId>
<version>1.5.1</version>
</dependency>
<!--lombok 自動創建pojo的set/get方法 -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
首先創建兩個對象
UserA:
import lombok.Data;
import org.springframework.data.annotation.Id;
@Data
public class UserA {
@Id
private int id;
private String name ;
private int age;
@Override
public String toString() {
return "UserA{id="+id+",name="+name+",age="+age+"}";
}
}
UserB:
import lombok.Data;
import org.springframework.data.annotation.Id;
@Data
public class UserB {
@Id
private int uid;
private String username;
private int age;
}
現在進行寫測試類
import com.superl.springboot.springbootdemo.orika.UserA;
import com.superl.springboot.springbootdemo.orika.UserB;
import ma.glasnost.orika.MapperFacade;
import ma.glasnost.orika.MapperFactory;
import ma.glasnost.orika.impl.DefaultMapperFactory;
import org.junit.Test;
public class OrikaTest {
@Test
public void oriaTest(){
/**
* 1.創建mapperFactory
* 2.做對象的映射
*/
MapperFactory mapperFactory = new DefaultMapperFactory.Builder().build();
mapperFactory.classMap(UserB.class, UserA.class)
.field("uid","id")
.field("username","name")
.byDefault()
.register();
//寫一個測試對象
UserB user = new UserB();
user.setUid(1);
user.setUsername("superl");
user.setAge(12);
//將測試對象userB-->UserA進行轉換
MapperFacade mapper = mapperFactory.getMapperFacade();
//.map()進行類型轉換
UserA userA = mapper.map(user,UserA.class);
System.out.print(userA.toString());
}
}
測試結果:
UserA{id=1,name=superl,age=12}