美文网首页
Orika入门

Orika入门

作者: yuanzicheng | 来源:发表于2017-06-30 18:07 被阅读6206次

    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入门

          本文链接:https://www.haomeiwen.com/subject/xlabcxtx.html