10 月 23 - 25 日,QCon 上海站即将召开,现在购票,享9折优惠 了解详情
写点什么

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

评论

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

今年有什么新内容?《解开网络密钥 - 互联网研究指南》

小猪佩奇身上纹

大模型知识助手,成功切入万亿级企业服务赛道

中关村科金

大模型 知识库

软件开发常说的CI/CD是什么

越长大越悲伤

CI/CD

简化测试流程,提供卓越服务:TestComplete+Salesforce满足不断发展的企业的需求

龙智—DevSecOps解决方案

2023值得关注的125家AIGC企业闪亮发布!

创业邦

搜索引擎基础《解开网络密钥 - 互联网研究指南》

小猪佩奇身上纹

了解搜索引擎《解开网络密钥 - 互联网研究指南》

小猪佩奇身上纹

搜索引擎基础《解开网络密钥 - 互联网研究指南》

小猪佩奇身上纹

重磅!腾讯云 CODING 入选软件供应链产品名录

CODING DevOps

连接未来,驱动创新|腾讯云 CODING DevOps 主题沙龙完美收官

CODING DevOps

不就是接根网线的事么?

小齐写代码

网络技术

从《孤注一掷》出发,聊聊 SSL 证书的重要性

火山引擎边缘云

https HTTP SSL证书 HTTPS协议

Semi D2C 设计稿转代码的演进之路

SemiDesign

figma Semi Design D2C Design to Code

重新定义生产力与创造力的新力量

百度开发者中心

人工智能 ChatGPT 生成式AI 文心一言

ARTS-WEEK3-23.8.28~23.9.2

Echo!!!

元载万物·智启新界,2023创业邦AIGC技术应用大会在深圳举行

创业邦

从降本增效到价值创造,大模型如何重塑智能语音产品

中关村科金

大模型 智能语音

可不能忽视的五个 HTTP 请求要点

Liam

程序员 前端 后端 HTTP API

国内首个政务领域 Web 引擎 SIG 成立!龙蜥联合儒特科技打造全新一代 Web 架构

OpenAnolis小助手

开源 Web 操作系统 龙蜥社区 龙蜥sig

自动驾驶点云标注:挑战与解决方案

数据堂

Python 案例实训教学,支持“教师-学生”双视角切换|ModelWhale 版本更新

ModelWhale

Python 人工智能 数据分析 超算 云课堂

2023 腾讯全球数字生态大会,腾讯云研发效能创新与实践专场来啦!

CODING DevOps

Go 切片

小万哥

Go 程序员 后端 开发 Google

云原生架构:在云环境中构建弹性应用

树上有只程序猿

微服务 云原生 容器化

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