MapStruct、ignore
文章目录
- @[toc]
- 使用
- 由Spring代理
- 不由spring代理
- 其它属性
- ignore
- 原理
Json工具是通过序列化反序列化来实现的,性能低下。
MapStruct是通过getter、setter来实现的。
<!--MapStruct依赖--><!-- https://mvnrepository.com/artifact/org.mapstruct/mapstruct-jdk8 --><dependency><groupId>org.mapstruct</groupId><artifactId>mapstruct-jdk8</artifactId><version>1.0.0.Final</version></dependency><!-- https://mvnrepository.com/artifact/org.mapstruct/mapstruct-processor --><dependency><groupId>org.mapstruct</groupId><artifactId>mapstruct-processor</artifactId><version>1.0.0.Final</version></dependency>
使用
@Data
@Builder
public class User {private String uname;private Integer uid;private String uaddr;
}
@Data
@Builder
@ToString
@AllArgsConstructor
@NoArgsConstructor
public class UserDto {private String name;private Integer id;private Integer updateUserId;}
由Spring代理
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.factory.Mappers;@Mapper(componentModel = "spring") //表示由Spring代理
public interface UserMapping {//UserMapping USERMAPOING = Mappers.getMapper(UserMapping.class); //可以不要/*
将user的uname映射成目标类userDto的name字段
...
*/@Mapping(target = "name",source = "uname")@Mapping(target = "id",source = "uid")UserDto userToUserDto(User user);
}
使用
@Resourceprivate UserMapping userMapping;public void func(){User user = User.builder().uname("zhangsan").uid(22).build();UserDto userDto = userMapping.userToUserDto(user);}
不由spring代理
@Mapper
public interface UserMapping {UserMapping USERMAPOING = Mappers.getMapper(UserMapping.class);@Mapping(target = "name",source = "uname")@Mapping(target = "id",source = "uid")UserDto userToUserDto(User user);
}
@Testpublic void t1(){User user = User.builder().uname("zhangsan").uid(22).build();UserDto userDto = UserMapping.USERMAPOING.userToUserDto(user);userDto.setUpdateUserId(111);log.info(userDto.toString());}
其它属性
ignore
@Mapping(target = “age”, ignore = true)
添加了ignore,表示不会对该属性做映射;
原理
MapStruct生成了mapping的实现类,通过调用get\set实现;
@Generated(value = "org.mapstruct.ap.MappingProcessor",date = "2021-04-30T12:58:59+0800",comments = "version: 1.0.0.Final, compiler: javac, environment: Java 1.8.0_211 (Oracle Corporation)"
)
@Component
public class UserMappingImpl implements UserMapping {@Overridepublic UserDto userToUserDto(User user) {if ( user == null ) {return null;}UserDto userDto = new UserDto();userDto.setName( user.getUname() );userDto.setId( user.getUid() );return userDto;}
}
MapStruct、ignore相关推荐
- mysql insert delayed_mysql insert的几点操作(DELAYED 、IGNORE、ON DUPLICATE KEY UPDATE )
INSERT语法 INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE] [INTO] tbl_name [(col_name,...)] V ...
- MyBatis Plus Generator 代码生成器 v3.5.x 案例,含校验、MapStruct、Swagger、QO、VO,自定义 FreeMarker 模板引擎
v3.5.3.v3.5.3.1 详情请点击 v3.5.1 代码生成器 import com.baomidou.mybatisplus.annotation.IdType; import com.bao ...
- 对象拷贝之Apache BeanUtils、Spring的BeanUtils、Mapstruct、BeanCopier、PropertieyUtils对比(深拷贝)
大多时候时候使用的是Apache或Spring``BeanUtils,今天,我们来看一下一个更高效的属性拷贝方式:BeanCopier. https://github.com/cglib/cglib ...
- mysql ignore index_mysql use index、ignore index、force index用法
原创你去了哪里 最后发布于2019-10-18 14:05:48 阅读数 121 收藏 展开 1:use index:在你查询语句表名的后面,添加use index来提供你希望mysql去参考的索引 ...
- MYSQL:Inert、IGNORE、REPLACE INTO的功能与用法
最后咱们通过简单的例子说明下: insert into表示插入数据,数据库会检查主键,如果出现重复会报错: replace into表示插入替换数据,需求表中有PrimaryKey,或者unique ...
- mysql use index用法_mysql use index、ignore index、force index用法
原创你去了哪里 最后发布于2019-10-18 14:05:48 阅读数 121 收藏 展开 1:use index:在你查询语句表名的后面,添加use index来提供你希望mysql去参考的索引 ...
- org.mapstruct:mapstruct 包的使用
最近发现一个特别好用的包,org.mapstruct:mapstruct,它是专门用来处理 domin 实体类与 model 类的属性映射的 它的优势: 很多项目大量映射的方式通过手动get.set, ...
- Java中实用的实体类映射工具MapStruct
1 vo.po.dto.bo.pojo.entity.mode的区别 在介绍MapStruct先说一下java中vo.po.dto.bo.pojo.entity.mode的区别是什么. 1)vo(va ...
- 【转】AfxMessageBox、MessageBox、::MessageBox的区别
AfxMessageBox的函数原型 int AfxMessageBox( LPCTSTR lpszText, UINT nType = MB_OK, UINT nIDHelp = 0 ); int ...
最新文章
- 计算机二级应用题改卷,全国计算机等级考试二级Python语言程序设计模拟试卷B卷综合应用题-Go语言中文社区...
- pku 3087 Shuffle'm Up 说的是bfs,其实就是个模拟
- 微信小游戏爆款秘笈 数据库MongoDB攻略篇
- mysql英文版怎么调中文_MYSQL 5.6安装设置中英文翻译
- 物联网网络编程和web编程
- Delphi自动提交网页表单和获取框架网页源码
- 【数据分析】太秀了!用Excel也能实现和Python数据分析一样的功能!
- 自定义的Android EditText
- 如何在TypeScript中使用JS类库
- 崩坏3服务器故障 临时维护,崩坏3 11.5游戏故障处理及补偿说明
- 编程师代码G都喜欢的|细致场景森系插画手机壁纸
- SQLSTATE[HY000] [2013] Lost connection to MySQL...
- java程序片的元素符号_UML 中的 基本画图元素及符号
- QT5实现摄像头预览与扑捉图像
- 《学术小白的学习之路 02》情感分析02 之基于大连理工情感词典的情感分析和情绪计算
- 教你一步步实现一个虚拟摇杆
- WebSocket多人聊天室
- 计算机里折叠项无法删除,删除右键多余菜单_如何去除右键菜单中多余选项?...
- PS无法拖拽置入图片解决办法
- FPGA 之 SOPC 系列 汇总篇