Orika入门

Orika是什么

Orika是一个简单、快速的JavaBean拷贝框架,它能够递归地将数据从一个JavaBean复制到另一个JavaBean,这在多层应用开发中是非常有用的。

为什么要使用Orika

Orika用于简化多层之间的对象映射,避免苦苦挣扎于手工编码和基于反射的映射。

Orika致力于提供一个全面、有效、强大的Java Bean映射解决方案。Orika关注尽可能地自动化,同时根据需要提供配置和扩展实现定制。

Orika为开发者提供了如下功能:
1.映射复杂的、深层次结构性对象。
2.通过将嵌套属性映射到顶级属性,“压平”或“展开”对象,反之亦然。
3.自动创建映射,并且在部分或所有映射上自定义。
4.创建转换器,以完全控制对象图中的任何特定对象集合的映射——按类型,甚至是通过特定的属性名。
5.处理代理或增强对象(如Hibernate或各种模拟框架)
6.用一个配置应用双向映射。
7.为一个目标抽象类或接口映射到具体的实现类。
8.映射POJO属性到Lists, Arrays, and Maps。

如何使用Orika

Orika使用字节代码生成来创建具有最小开销的快速映射器。

官网指引:http://orika-mapper.github.io/orika-docs/intro.html

示例

1.Step1:添加Gradle(或Maven)依赖

  compile group: 'ma.glasnost.orika', name: 'orika-core', version: '1.5.1'

2.Step2:创建2个用于测试的Java Bean
User.java

public class User {
    private Long id;
    private String name;

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

UserA.java

public class UserA {
    private Long id;
    private String name;

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
        return "UserA{" +
                "id=" + id +
                ", name='" + name + '\'' +
                '}';
    }
}

3.Step3:利用Orika映射两个Object

public class TestGradle {
    public static void main(String[] args) {
        MapperFactory mapperFactory = new DefaultMapperFactory.Builder().build();
        mapperFactory.classMap(User.class, UserA.class)
                .field("id", "id")
                .field("name", "name")
                .byDefault()
                .register();

        User user = new User();
        user.setId(123L);
        user.setName("小明");

        MapperFacade mapper = mapperFactory.getMapperFacade();

        UserA userA = mapper.map(user, UserA.class);
        System.out.println(userA.toString());
    }
}

运行结果

{"id":123,"name":"小明"}

可以看到通过简单几行代码,就把数据从一个Object复制到了另一个Object,示例比较简单,Orika还支持更为复杂的映射(复制),更多功能通过实践来解锁吧。

你可能感兴趣的:(Orika入门)