转自:https://www.cnblogs.com/albert1024/articles/8434741.html

Orika是一个简单、快速的JavaBean拷贝框架,Orika使用字节代码生成来创建具有最小开销的快速映射器。

关于:

作为开发人员,我们必须为业务问题提供解决方案,我们希望利用我们的时间来做真正重要的事情。在我们的时代,企业应用程序变得越来越复杂,有大量的体系结构和设计约束。

设计的约束会产生大量的机械工作。许多开源项目都在我们的手中,有一些很好的工具来面对这样的复杂性,比如,Guice,Hibernate,Wicket。我们有很多可用的选项来解决整个问题的每个部分。然而,所有这些不同的工具/框架/库,是很常见的,它通常需要我们把对象转换格式化,以适应不同的api,甚至我们可能是因为自己的设计原因需要在不同的业务层之间转换格式;为了完成这一任务,我们需要编写映射代码来将值从一种类型复制到另一种类型。

在一个中型到大型的项目中,这样的映射代码可以达到相当大的工作量(枯燥的)工作,而这些工作很难维护、测试和调试。

Orika试图为你做这一乏味的工作,在性能上几乎没有什么可衡量的平衡

它将自动收集类的元数据来生成映射对象,这些映射对象可以一起使用,以递归地将数据从一个对象图复制到另一个对象图。Orika试图提供许多方便的功能,同时保持相对简单和开放的状态——让你有可能扩展和调整它,以满足你的需要。

准备:

  • 在maven中添加依赖
1
2
3
4
5
<dependency>
   <groupId>ma.glasnost.orika</groupId>
   <artifactId>orika-core</artifactId>
   <version>1.4.2</version><!-- or latest version -->
</dependency>

  

使用:

  • 创建2个用于测试的Java Bean
 1 public class Person {
2 private Integer id;
3 private String name;
4 private Integer sex;
5
6 private String ext1;
7
8 public String getExt1() {
9 return ext1;
10 }
11
12 public void setExt1(String ext1) {
13 this.ext1 = ext1;
14 }
15
16 public Integer getId() {
17 return id;
18 }
19
20 public void setId(Integer id) {
21 this.id = id;
22 }
23
24 public String getName() {
25 return name;
26 }
27
28 public void setName(String name) {
29 this.name = name;
30 }
31
32 public Integer getSex() {
33 return sex;
34 }
35
36 public void setSex(Integer sex) {
37 this.sex = sex;
38 }
39
40 }
 1 public class PersonDTO {
2 private Integer id;
3 private String name;
4 private Integer sex;
5
6 private String ext2;
7
8 public String getExt2() {
9 return ext2;
10 }
11
12 public void setExt2(String ext2) {
13 this.ext2 = ext2;
14 }
15
16 public Integer getId() {
17 return id;
18 }
19
20 public void setId(Integer id) {
21 this.id = id;
22 }
23
24 public String getName() {
25 return name;
26 }
27
28 public void setName(String name) {
29 this.name = name;
30 }
31
32 public Integer getSex() {
33 return sex;
34 }
35
36 public void setSex(Integer sex) {
37 this.sex = sex;
38 }
39
40
41 }
  • 普通映射
 1 public class OrikaTest {
2 public static void main(String[] args) {
3 MapperFactory mapperFactory = new DefaultMapperFactory.Builder().build();
4 MapperFacade mapper = mapperFactory.getMapperFacade();
5
6 Person person = new Person();
7 person.setId(1);
8 person.setName("小王");
9 person.setSex(1);
10 person.setExt1("ext1");
11
12 PersonDTO personDTO = mapper.map(person, PersonDTO.class);
13 System.out.println(JSON.toJSONString(personDTO));
14 }
15
16 } 输出结果:{"id":1,"name":"小王","sex":1}
  • 假设你映射的对象的一些字段的名称并不匹配,你可以通过ClassMapBuider API来为这些不同的fields注册映射关系:
 1 public class OrikaTest {
2 public static void main(String[] args) {
3 MapperFactory mapperFactory = new DefaultMapperFactory.Builder().build();
4 mapperFactory.classMap(Person.class, PersonDTO.class).field("ext1", "ext2").byDefault().register();
5 MapperFacade mapper = mapperFactory.getMapperFacade();
6
7 Person person = new Person();
8 person.setId(1);
9 person.setName("小王");
10 person.setSex(1);
11 person.setExt1("ext...");
12
13 PersonDTO personDTO = mapper.map(person, PersonDTO.class);
14 System.out.println(JSON.toJSONString(personDTO));
15 }
16
17 }

输出结果:{"ext2":"ext...","id":1,"name":"小王","sex":1}

  • 假设你映射的对象中有的字段你不想copy,你可以通过exclude进行过滤
 1 public class OrikaTest {
2 public static void main(String[] args) {
3 MapperFactory mapperFactory = new DefaultMapperFactory.Builder().build();
4 mapperFactory.classMap(PersonDTO.class, Person.class).exclude("sex").byDefault().register();
5 MapperFacade mapper = mapperFactory.getMapperFacade();
6
7 Person person = new Person();
8 person.setId(1);
9 person.setName("小王");
10 person.setSex(1);
11
12 PersonDTO personDTO = mapper.map(person, PersonDTO.class);
13 System.out.println(JSON.toJSONString(personDTO));
14 }
15
16 } 输出结果:{"id":1,"name":"小王"}

【代码工具】Orika JavaBean映射工具探秘的更多相关文章

  1. Orika JavaBean映射工具探秘

    Orika是一个简单.快速的JavaBean拷贝框架,Orika使用字节代码生成来创建具有最小开销的快速映射器. 关于: 作为开发人员,我们必须为业务问题提供解决方案,我们希望利用我们的时间来做真正重 ...

  2. JavaBean映射工具dozer学习

    阅读更多 转载自http://lishaorui.iteye.com/blog/1151513 1.简介     dozer是一种JavaBean的映射工具,类似于apache的BeanUtils.但 ...

  3. 常见Bean映射工具分析评测及Orika介绍

    原地址:http://tech.dianwoda.com/2017/11/04/gao-xing-neng-te-xing-feng-fu-de-beanying-she-gong-ju-orika/ ...

  4. Bean映射工具之Apache BeanUtils VS Spring BeanUtils

    背景 在我们实际项目开发过程中,我们经常需要将不同的两个对象实例进行属性复制,从而基于源对象的属性信息进行后续操作,而不改变源对象的属性信息,比如DTO数据传输对象和数据对象DO,我们需要将DO对象进 ...

  5. Java bean常见映射工具分析和比较

    1. 概述 日常Java开发项目中,我们经常需要将对象转换成其他形式的对象,因此我们需要编写映射代码将对象中的属性值从一种类型转换成另一种类型. 进行这种转换除了手动编写大量的get/set代码,还可 ...

  6. EF架构~AutoMapper对象映射工具简化了实体赋值的过程

    回到目录 AutoMapper是一个.NET的对象映射工具,一般地,我们进行面向服务的开发时,都会涉及到DTO的概念,即数据传输对象,而为了减少系统的负载,一般我们不会把整个表的字段作为传输的数据,而 ...

  7. 根据表结构自动生成JavaBean,史上最强最专业的表结构转JavaBean的工具(第2版)

             目录:                 第1版:http://blog.csdn.net/vipbooks/article/details/51912143              ...

  8. .NET的DTO映射工具AutoMapper

    .NET的DTO映射工具AutoMapper 原文:https://github.com/AutoMapper/AutoMapper/wiki/Getting-started 参考:http://ww ...

  9. .NET的对象映射工具AutoMapper使用笔记

    AutoMapper是一个.NET的对象映射工具. 项目地址:https://github.com/AutoMapper/AutoMapper. 帮助文档:https://github.com/Aut ...

随机推荐

  1. Cloudera Hadoop启用Kerberos认证

    一.Kerberos 二.安装 node01服务器安装Kerberos的核心服务master KDC,node02和node03安装Kerberos client cm也安装在node01上了 1.m ...

  2. TableStore最佳实践:轻松实现轨迹管理与地理围栏

    摘要: 基于TableStore轻松实现亿量级轨迹管理与地理围栏 一.方案背景 轨迹管理系统日常生活中使用非常普遍,如外卖派送轨迹.快递物流流转.车辆定位轨迹等.该场景与地理位置管理类似,核心点与瓶颈 ...

  3. 【软工项目Beta阶段】博客目录

    绝不划水队Beta冲刺阶段博客目录 一.Scrum Meeting 第十周会议记录 第十一周会议记录 二.测试报告 Beta阶段测试报告 三.习得的软工原理/方法/技能? (1)在进行OUC-Mark ...

  4. jdbc baseDAO 以及 每个类的继承

    首先是baseDAO,用来作为DAO的父类 package dao; import java.lang.reflect.Field; import java.sql.Connection; impor ...

  5. C#将数据导入到Excel表格中

    public static DataTable GetExcelToDataTableBySheet(string FileFullPath, string SheetName){           ...

  6. 3D打印切片软件Cura及CuraEngine原理分析

    引言 年初开始进入3D打印行业,受命以Cura为基础,研发一款自主的3D打印切片软件. 自主研发要取其长处,补其不足,首先自然是要搞清楚Cura到底做了什么,读Cura的代码是必需的.我一向都觉得比起 ...

  7. 6.zabbix微信告警3.2

    原文地址: https://blog.cactifans.com/2016/01/27/zabbix%E5%BE%AE%E4%BF%A1%E5%91%8A%E8%AD%A6/ pdf : 链接: ht ...

  8. 关于最近练习PYTHON代码的一点心得

    做测试以来,一直想学习代码,以前也断断续续的学习过,不过都是练习一些基础语法,学习的是菜鸟教程,但是效果不大. 最近在练习CODEWAR里做练习题,慢慢强化自己对一些基本语法的理解,熟悉基本的内置函数 ...

  9. HTML5: HTML5 Video(视频)

    ylbtech-HTML5: HTML5 Video(视频) 1.返回顶部 1. HTML5 Video(视频) 很多站点都会使用到视频. HTML5 提供了展示视频的标准. 检测您的浏览器是否支持 ...

  10. 推荐一款 MyBatis 开发神器,为简化而生!

    Java技术栈 )); MyBatis-Plus将会生成以下查询SQL: SELECT * FROM user WHERE age >= 18FROM user WHERE age >=  ...