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}

 

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