<!-- modelmapper依赖 -->
<dependency><groupId>org.modelmapper</groupId><artifactId>modelmapper</artifactId><version>2.3.9</version>
</dependency>

以下为相关的使用示例

<dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.16.18</version>
</dependency>
<dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version>
</dependency>

源对象:

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;@Data
@NoArgsConstructor
@AllArgsConstructor
public class Apple {private String id;private String name;private String createAge;private String age;
}

目标对象:

import lombok.Data;@Data
public class AppleDto {private String name;private String create_age;private String birth;
}
import org.junit.Test;
import org.modelmapper.ModelMapper;
import org.modelmapper.PropertyMap;
import org.modelmapper.TypeToken;
import org.modelmapper.convention.MatchingStrategies;public class Demo {public static Apple apple=new Apple("1", "red", "21", "25");;ModelMapper modelMapper = new ModelMapper();@Testpublic void test1(){//直接使用modelMapper要求两个对象的属性命名必须完全一致AppleDto appleDto = modelMapper.map(apple, AppleDto.class);System.out.println(appleDto.toString());}@Testpublic void test2(){//修改modelMapper的匹配策略:松散匹配源属性和目标属性//将AppleDto字段改成createage也是可以正确赋值modelMapper.getConfiguration().setMatchingStrategy(MatchingStrategies.LOOSE);AppleDto appleDto = modelMapper.map(apple, AppleDto.class);System.out.println(appleDto.toString());}@Testpublic void test3(){//modelMapper采用自定义源属性和目标属性映射规则modelMapper.addMappings(customField());AppleDto appleDto = modelMapper.map(apple, new TypeToken<AppleDto>(){}.getType());System.out.println(appleDto);}/*** 自定义源(Apple)属性和目标(destination)属性映射规则*/private static PropertyMap customField() {return new PropertyMap<Apple, AppleDto>() {@Overrideprotected void configure() {map(source.getAge(), destination.getBirth());}};}
}

实体映射类库之ModelMapper相关推荐

  1. 推荐一个 Java 实体映射工具 MapStruct

    声明: 1.DO(业务实体对象),DTO(数据传输对象). 2.我的代码中用到了 Lombok ,不了解的可以自行了解一下,了解的忽略这条就好. 在一个成熟的工程中,尤其是现在的分布式系统中,应用与应 ...

  2. 开源实体映射框架EmitMapper介绍

    综述 EmitMapper是一个开源实体映射框架,地址:http://emitmapper.codeplex.com/. EmitMapper映射效率比较高,接近硬编码.EmitMapper采用emi ...

  3. java EF6,EF Core 2.0和EF6(Entity Framework 6)中配置实体映射关系

    1.EF6中通过EntityTypeConfiguration配置实体映射关系代码 public class AccountMap : EntityTypeConfiguration { public ...

  4. Java实体映射工具MapStruct

    声明: 1.DO(业务实体对象),DTO(数据传输对象). 2.我的代码中用到了 Lombok ,不了解的可以自行了解一下,了解的忽略这条就好. 1 2 3 在一个成熟的工程中,尤其是现在的分布式系统 ...

  5. 在 ASP.NET Core 项目中使用 AutoMapper 进行实体映射

    一.前言 在实际项目开发过程中,我们使用到的各种 ORM 组件都可以很便捷的将我们获取到的数据绑定到对应的 List<T> 集合中,因为我们最终想要在页面上展示的数据与数据库实体类之间可能 ...

  6. jpa 实体映射视图_JPA教程:实体映射-第2部分

    jpa 实体映射视图 在上一篇文章中,我展示了一种持久保存实体的简单方法. 我解释了JPA用于确定实体默认表的默认方法. 假设我们要覆盖此默认名称. 我们之所以喜欢这样做,是因为数据模型是以前设计和修 ...

  7. jpa 实体映射视图_JPA教程:实体映射-第3部分

    jpa 实体映射视图 在上一篇文章中,我展示了两种读取/写入持久实体状态的不同方法-字段和属性. 使用字段访问模式时,JPA使用反射直接从实体的字段读取状态值. 如果我们没有明确指定列名,它将直接将字 ...

  8. jpa 实体映射视图_JPA教程:映射实体–第1部分

    jpa 实体映射视图 在本文中,我将讨论JPA中的实体映射过程. 至于我的示例,我将使用与 我以前的一篇文章中使用的模式相同的模式 . 在前两篇文章中,我解释了如何在Java SE环境中设置JPA. ...

  9. JPA教程:实体映射-第2部分

    在上一篇文章中,我展示了一种持久保存实体的简单方法. 我解释了JPA用于确定实体默认表的默认方法. 假设我们要覆盖此默认名称. 我们之所以喜欢这样做,是因为数据模型是以前设计和修复的,并且表名与我们的 ...

最新文章

  1. excel打不开怎么修复_SD卡坏了怎么办?一招教你拯救文件!
  2. Linux 文件系统结构介绍
  3. 前牙正常覆盖是多少_个性化舌侧矫治器的前牙转矩控制技巧——赵志河教授
  4. boost::math模块使用二项分布复制 NAG 库调用的测试程序
  5. win10装sql2000卡在选择配置_恢复win10系统安装SQL2000卡在MADC不动的妙计
  6. python deepcopy报错_python 字典对象赋值之deepcopy遭遇的问题及解决过程(lxml惹的祸)...
  7. apt报错Hash 校验和不符解决办法
  8. 周鸿祎:网络安全面前 没有国家可以袖手旁观
  9. 字节跳动回应抖音上市;苹果公司:全球多个国家的 App 价格将上涨;GDB 10.1 发布|极客头条
  10. react 获取url参数_十分钟上手 React+MirrorX,从此前端大神代码不再难懂
  11. 使用matlab进行深度学习
  12. 深圳大数据学习:怎样进行大数据的入门级学习?
  13. php 字符串 strpos,PHP字符串处理函数:strpos() -- 内置函数
  14. LVGL官方文档-7.11.0-8-Porting-Logging
  15. 写代码赚钱的一些门路
  16. js调用百度地图API获取区域边界线
  17. [ADS]ADS1.2软件的破解
  18. 输出100以内的所有质数(每行10个)
  19. 联想S41-70拆机换内存条
  20. CF Educational Round 57(1096) 比赛记录

热门文章

  1. 异常:Invalid character found in the request target. The valid characters are defined in RFC 3986
  2. STMP发送邮件被当垃圾邮件处理的解决方法
  3. AdaPrompt:进一步将下游任务融入到预训练模型
  4. GPT Plus Money!B O O M
  5. bigdecimal比较大小的方法_【初中数学思维训练】第7题——比较大小的常用方法...
  6. mysql修改表结构 删除字段_mysql更改表结构:添加、删除、修改字段、调整字段顺序...
  7. HDU-1540 Tunnel Warfare 线段树最大连续区间 或 STL巧解
  8. TypeError: create_target_machine() got an unexpected keyword argument ‘jitdebug‘解决方案
  9. Redis基础(二)——通用命令和配置
  10. LVS DR模式搭建、keepalived + LVS