写点什么

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:103868

评论

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

快递鸟上门取件API接口代码流程

快递鸟

快递物流

矩阵起源 CEO 王龙出席 1024 超互联(苏州)总部节点发布会

MatrixOrigin

Web3 游戏周报(10.27 - 11.02)

Footprint Analytics

链游

存储数据库的传输效率提升-ETLCloud结合HBASE

RestCloud

数据库 HBase 数据传输 ETL 数据集成

逐步教你如何获取DeepL翻译API密钥

幂简集成

DeepL API

精选8款银行开发管理系统,提升工作效率

爱吃小舅的鱼

需求管理工具 需求管理软件 需求管理系统

TDengine 检测数据最佳压缩算法工具,助你一键找出最优压缩方案

TDengine

tdengine 时序数据库 数据库·

鸿蒙Banner图一多适配不同屏幕

龙儿筝

TDengine 荣膺双奖:引领储能与数据库创新

TDengine

tdengine 时序数据库 数据库·

Fluent Editor 富文本开源2个月的总结:增加格式刷、截屏、TypeScript 类型声明等新特性

OpenTiny社区

富文本编辑器 OpenTiny 前端开源

故障测试 Byteman 上手实践

FunTester

codigger体验过程记录

芯动大师

codigger

快递鸟电子面单模板规格大全

快递鸟

快递 电子面单

Net5.5G智能IP网络峰会成功举办,全球Net5.5G加速商用部署

财见

小公司团队管理:沟通与激励的艺术

爱吃小舅的鱼

团队管理

如何成为高效的中层管理人员:管理水平提升指南

爱吃小舅的鱼

中层管理人员

如何评估项目管理工具的性价比?8款工具

爱吃小舅的鱼

项目管理工具

软件测试学习笔记丨Flask操作数据库-多对多

测试人

数据库 软件测试 测试开发

TDengine 签约山东港,赋能港口数字化转型

TDengine

数据库 tdengine 时序数据库

故障演练的逻辑

陈一之

架构设计 混沌工程 故障演练 技术思维

「胖钱包」理论解析:钱包为何将超越协议与应用,赢下「最终用户」争夺战?

TechubNews

AI Fabric:通往 GenAI 和数据驱动型企业的最快途径

Altair RapidMiner

人工智能 机器学习 数据分析 altair RapidMiner

Zypher Network:全栈式 Web3 游戏引擎,引领服务器抽象叙事

西柚子

如何选择?开发体育赛事直播平台时的源码质量对比!

软件开发-梦幻运营部

Python装饰器执行的顺序你知道吗

LLLibra146

Python 装饰器 代码技巧

MatrixOne 助力西安天能替换MySQL+MongoDB+ES打造一体化物联网平台

MatrixOrigin

为什么使用海外云手机进行TikTok矩阵化运营?

Ogcloud

云手机 海外云手机 tiktok云手机 tiktok运营 TikTok矩阵运营

NFTScan | 10.28~11.3 NFT 市场热点汇总

NFT Research

NFT\ NFTScan

K8s网络基本原理

陈一之

Kubernetes 容器 k8s 网络

火山引擎大模型网关 x 地瓜机器人教你玩转主流大模型

火山引擎边缘云

边缘计算 机器人 大模型 边缘智能

拼多多详情API的价值与应用解析

科普小能手

API 接口 API 测试 拼多多API接口 拼多多API 拼多多商品API接口

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