实体映射类库之ModelMapper
<!-- 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相关推荐
- 推荐一个 Java 实体映射工具 MapStruct
声明: 1.DO(业务实体对象),DTO(数据传输对象). 2.我的代码中用到了 Lombok ,不了解的可以自行了解一下,了解的忽略这条就好. 在一个成熟的工程中,尤其是现在的分布式系统中,应用与应 ...
- 开源实体映射框架EmitMapper介绍
综述 EmitMapper是一个开源实体映射框架,地址:http://emitmapper.codeplex.com/. EmitMapper映射效率比较高,接近硬编码.EmitMapper采用emi ...
- java EF6,EF Core 2.0和EF6(Entity Framework 6)中配置实体映射关系
1.EF6中通过EntityTypeConfiguration配置实体映射关系代码 public class AccountMap : EntityTypeConfiguration { public ...
- Java实体映射工具MapStruct
声明: 1.DO(业务实体对象),DTO(数据传输对象). 2.我的代码中用到了 Lombok ,不了解的可以自行了解一下,了解的忽略这条就好. 1 2 3 在一个成熟的工程中,尤其是现在的分布式系统 ...
- 在 ASP.NET Core 项目中使用 AutoMapper 进行实体映射
一.前言 在实际项目开发过程中,我们使用到的各种 ORM 组件都可以很便捷的将我们获取到的数据绑定到对应的 List<T> 集合中,因为我们最终想要在页面上展示的数据与数据库实体类之间可能 ...
- jpa 实体映射视图_JPA教程:实体映射-第2部分
jpa 实体映射视图 在上一篇文章中,我展示了一种持久保存实体的简单方法. 我解释了JPA用于确定实体默认表的默认方法. 假设我们要覆盖此默认名称. 我们之所以喜欢这样做,是因为数据模型是以前设计和修 ...
- jpa 实体映射视图_JPA教程:实体映射-第3部分
jpa 实体映射视图 在上一篇文章中,我展示了两种读取/写入持久实体状态的不同方法-字段和属性. 使用字段访问模式时,JPA使用反射直接从实体的字段读取状态值. 如果我们没有明确指定列名,它将直接将字 ...
- jpa 实体映射视图_JPA教程:映射实体–第1部分
jpa 实体映射视图 在本文中,我将讨论JPA中的实体映射过程. 至于我的示例,我将使用与 我以前的一篇文章中使用的模式相同的模式 . 在前两篇文章中,我解释了如何在Java SE环境中设置JPA. ...
- JPA教程:实体映射-第2部分
在上一篇文章中,我展示了一种持久保存实体的简单方法. 我解释了JPA用于确定实体默认表的默认方法. 假设我们要覆盖此默认名称. 我们之所以喜欢这样做,是因为数据模型是以前设计和修复的,并且表名与我们的 ...
最新文章
- excel打不开怎么修复_SD卡坏了怎么办?一招教你拯救文件!
- Linux 文件系统结构介绍
- 前牙正常覆盖是多少_个性化舌侧矫治器的前牙转矩控制技巧——赵志河教授
- boost::math模块使用二项分布复制 NAG 库调用的测试程序
- win10装sql2000卡在选择配置_恢复win10系统安装SQL2000卡在MADC不动的妙计
- python deepcopy报错_python 字典对象赋值之deepcopy遭遇的问题及解决过程(lxml惹的祸)...
- apt报错Hash 校验和不符解决办法
- 周鸿祎:网络安全面前 没有国家可以袖手旁观
- 字节跳动回应抖音上市;苹果公司:全球多个国家的 App 价格将上涨;GDB 10.1 发布|极客头条
- react 获取url参数_十分钟上手 React+MirrorX,从此前端大神代码不再难懂
- 使用matlab进行深度学习
- 深圳大数据学习:怎样进行大数据的入门级学习?
- php 字符串 strpos,PHP字符串处理函数:strpos() -- 内置函数
- LVGL官方文档-7.11.0-8-Porting-Logging
- 写代码赚钱的一些门路
- js调用百度地图API获取区域边界线
- [ADS]ADS1.2软件的破解
- 输出100以内的所有质数(每行10个)
- 联想S41-70拆机换内存条
- CF Educational Round 57(1096) 比赛记录
热门文章
- 异常:Invalid character found in the request target. The valid characters are defined in RFC 3986
- STMP发送邮件被当垃圾邮件处理的解决方法
- AdaPrompt:进一步将下游任务融入到预训练模型
- GPT Plus Money!B O O M
- bigdecimal比较大小的方法_【初中数学思维训练】第7题——比较大小的常用方法...
- mysql修改表结构 删除字段_mysql更改表结构:添加、删除、修改字段、调整字段顺序...
- HDU-1540 Tunnel Warfare 线段树最大连续区间 或 STL巧解
- TypeError: create_target_machine() got an unexpected keyword argument ‘jitdebug‘解决方案
- Redis基础(二)——通用命令和配置
- LVS DR模式搭建、keepalived + LVS