亮网络解锁器,解锁网络数据的无限可能 了解详情
写点什么

ModelMapper: 从对象到对象的映射库

  • 2012-11-26
  • 本文字数:795 字

    阅读完需:约 3 分钟

ModelMapper 是一个从对象到对象(object-to-object)的框架,能将 Java Bean(Pojo)对象从一种表现形式转化为另一种表现形式。它采用“通过约定来配置”的方式,自动匹配不同的对象映射,同时具备满足某些特殊需求的高级功能。这与.NET AutoMapper 库很类似(但不是直接移植)。

ModelMapper 能用更加紧凑的代码对 Java 对象进行映射,在更简单的情况下甚至可以实现零配置。它支持以下特性:

  • 基于名称的对象属性映射
  • 复制公开的、受保护的和私有的字段
  • 略过某些字段
  • 可用转换器来影响映射(如将字符串转换为小写)
  • 在不同类型的字段间进行映射(如将字符串转换为数字)
  • 采用不同的条件进行映射
  • 默认条件不充分时采用松散的映射策略
  • 对映射过程进行验证以确保所有字段都被处理
  • 对特殊情况下的映射过程进行完全可定制化的控制
  • Guice Spring 集成

在企业应用中,将对象从一种形式转换成另一种是非常普遍的模式。例如,某领域模型从数据库中加载,并需要在 GUI 上显示给用户。其原始数据库格式会包含大量用于生命周期的属性,而屏幕前的用户可能只关心其中的一两个字段。所以很多时候,用于数据库的 Pojo( JPA 实体)与用于 GUI 的 Pojo 是不同的。这正是 ModelMapper 试图解决的问题。一般来说,当信息在企业应用内的层之间发生改变时,就会发生对象转换。

其他会发生对象转换的场景包括:

  • 多个对象聚合成一个
  • 在已存在的对象中计算一些额外的元数据
  • 转换对象以便发送到外部系统中
  • 未定义的属性里赋予默认值
  • 通过某种方式来转换已有的属性(对象自映射)

ModelMapper 已经位于 Maven Central 中。更多信息请查看用户手册 Javadoc 。源代码可在 Github 上下载。

查看英文原文: ModelMapper: An Object To Object Mapping Library


感谢姚琪琳对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ )或者腾讯微博( @InfoQ )关注我们,并与我们的编辑和其他读者朋友交流。

2012-11-26 10:103702

评论

发布
暂无评论
发现更多内容

Kubernetes手记(19)- 容器资源限制

雪雷

k8s 6月日更

LinkedHashMap

wzh

Java 集合 LRU 数据结构与算法 LinkedHashMap

数组与链表

wzh

Java 数组 链表 ArrayList 数据结构与算法

OpenCV-Python+Moviepy结合进行视频特效处理

老猿Python

Python 音视频 Video PPT 引航计划

JAVA 面向对象 (十)--接口和抽象类

加百利

Java 后端 笔记 6月日更

软件开发项目中,产品经理和程序员谁更累?

万事ONES

产品经理 研发管理 ONES 项目经理

迷惘的六月份

卢卡多多

生活状态 6月日更

推荐算法概述(十五)

数据与智能

算法 倒排索引 推荐系统

Reactive Spring实战 -- 响应式Kafka交互

binecy

kafka spring

领域驱动设计101 - 领域服务

luojiahu

领域驱动设计 DDD

HashMap源码总结

wzh

Java map 数据结构与算法 HashMap底层原理 散列表

Linux之rmdir命令

入门小站

Linux

在线PS(PhotoShop),打开PSD文件,图像处理

入门小站

PhotoShop ps

react源码解析18事件系统

全栈潇晨

React

软件复杂度

海拉鲁

读书笔记 软件工程 软件设计

做好项目管理,项目经理需要具备哪些优秀品质?

万事ONES

项目管理 研发管理 研发管理工具 ONES

ARTS - 日常打卡 6

pjw

在线HTML标签清除工具

入门小站

工具

什么是OneData?阿里数据中台实施方法论解读

云祁

数据中台 数据仓库 OneData 维度建模

十年一剑智能眼镜的中场战事

脑极体

Elastic Job简单使用

赵镇

Elastic-job

JS完美收官之——继承发展史

法医

大前端 js 6月日更

Redis:我是如何与客户端进行通信的

码农参上

redis Redis 协议

网络抓包实战01——互联⽹:客户端请求是如何到达服务器的

青春不可负,生活不可欺

Wireshark TCP/IP tcpdump 网络抓包 tcpcopy

常见Java容器对比

wzh

Java collection hashmap set map

线性排序

wzh

Java 排序算法 计数排序 基数排序 桶排序

【21-15】PowerShell条件判断

耳东@Erdong

PowerShell 6月日更

微信小程序开发(七)—— 版本管理的使用

空城机

微信小程序 大前端 6月日更

业务架构训练营第 0 期模块五作业

菠萝吹雪—Code

架构实战营

微服务架构下的静态数据通用缓存机制

xcbeyond

缓存 微服务 6月日更

简单好用一键恢复丢失办公文档

淋雨

EasyRecovery 文件恢复 免费恢复软件 硬盘数据恢复

ModelMapper:从对象到对象的映射库_Java_Kostis Kapelonis_InfoQ精选文章