springboot/maven-orika 映射

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}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章