mybatis date类型映射_MapStruct 映射工具
MapStruct 映射工具
本篇主要讲解MapStruct 一款映射工具,只需简单的定义一个Mapper接口,在编译期间,MapStruct将生成此接口的实现,据说MapStruct性能最高是Spring的CopyProperties的10倍,与手工编写映射代码相比,MapStruct通过生成繁琐且易于编写的代码来节省时间。遵循约定优于配置方法,MapStruct使用合理的默认值,但在配置或实现特殊行为时会采取措施。
1.引入MapStruct的依赖
<dependency><groupId>org.mapstruct</groupId><artifactId>mapstruct-jdk8</artifactId><version>1.3.0.Final</version></dependency><dependency><groupId>org.mapstruct</groupId><artifactId>mapstruct-processor</artifactId><version>1.3.0.Final</version></dependency>
2.使用MapStruct
2.1 创建实体Entity
@Data@Entity@EntityListeners(AuditingEntityListener.class)public class BlogInfo {@Id@GeneratedValue(strategy = GenerationType.IDENTITY)private Long id; /*** 博客标题*/@Field(analyzer = "ik_max_word" , type = FieldType.Text , searchAnalyzer = "ik_max_word")private String blogTitle;/*** 博客内容*/@Column(columnDefinition = "text")private String blogContent;/*** 博客简要*/private String blogShortContent;}
2.2 创建Vo对象或者DTO对象
@Data@Accessors(chain = true)public class BlogInfoVo {private Long id;/*** 博客标题*/private String blogTitle;/*** 博客内容*/private String blogContent;/*** 博客简要*/private String blogShortContent;}
2.3 创建一个Mapper接口
1.类名上面添加@Mapper注解,使用Mybatis的小伙伴要注意导入的是MapStruct的@Mapper 不要混淆 2.写上转化方法,如果有属性 字段 或者 类型 不同可以使用 @Mappings指定 3.当需要从字符串Date转成日期Date时候需要提供一个 uses = DateMapper.class
/*** Media Converter** @author johnny* @create 2019-11-08 上午11:20**/@Mapper(uses = DateMapper.class )public interface BlogInfoConverter {BlogInfoConverter INSTANCE = Mappers.getMapper(BlogInfoConverter.class);@Mappings({@Mapping(source = "createDate", target = "createDate" ,dateFormat = "yyyy-MM-dd"),//表示从BlogInfo的createDate 转成 BlogInfoVo的createDate 使用 yyyy-MM-dd进行转换@Mapping(source = "createTime" , target = "createTime" , dateFormat = "yyyy-MM-dd"),@Mapping(target = "anchors" , ignore = true)})BlogInfoVo domain2vo(BlogInfo blogInfo);//这里包含 从String类型的Date转换成日期类型的Date,就需要使用 uses=DateMapper.classBlogInfo vo2domain(BlogInfoVo blogInfoVo);
}
贴出来:可以直接粘贴使用 DateMapper
public class DateMapper {public String asString(Date date) {return date != null ? new SimpleDateFormat("yyyy-MM-dd").format(date) : null;}public Date asDate(String date) {try {return date != null ? new SimpleDateFormat("yyyy-MM-dd").parse(date) : null;} catch (ParseException e) {throw new RuntimeException(e);}}}
2.4 调用
BlogInfoConverter.INSTANCE.domain2vo
@Overridepublic List<BlogInfoVo> queryByTypeId(Integer typeId) {List<BlogInfoVo> list = new ArrayList<>();blogInfoRepository.findByBlogTypeId(typeId).stream().forEach(blogInfo -> {list.add(BlogInfoConverter.INSTANCE.domain2vo(blogInfo));});return list;}
总结
本篇主要讲解MapStruct的基本使用方法,里面的很多其他的用法我也还没深入探究,不过我本是很喜欢使用MapStruct的
个人博客系统 https://www.askajohnny.com欢迎访问!
本文由博客一文多发平台 OpenWrite 发布!
mybatis date类型映射_MapStruct 映射工具相关推荐
- mybatis date类型映射_Mybatis中类型映射处理器详解
上一篇梳理了Configuration初始化分析,今天继续typeHandlers部分. 数据库厂商标识 接上一篇文章分析,下一个解析的是databaseIdProvider节点,这个节点好理解,从字 ...
- mybatis date类型比较,起始时间或结束时间。
如果数据库是时间类型而且你传的值也是时间类型,可以直接比较. 2023-2-17 更新 可以起始时间和结束时间一起判断 <if test="startTime != null and ...
- 映射date类型_JPA 日历映射到日期示例
以下部分显示如何将java.util.Calendar映射到数据库日期类型. @Temporal(TemporalType.DATE) private java.util.Calendar dob; ...
- Java 时间和日期类型的 Hibernate 映射
以下情况下必须显式指定 Hibernate 映射类型 一个 Java 类型可能对应多个 Hibernate 映射类型. 例如: 如果持久化类的属性为 java.util.Date 类型, 对应的 Hi ...
- mybatis入门基础(四)----输入映射和输出映射
阅读目录 一:输入映射 二:输出映射 回到顶部 一:输入映射 通过parameterType指定输入参数的类型,类型可以是简单类型.hashmap.pojo的包装类型. 1.1.传递pojo的包装对象 ...
- 实习笔记 —— MyBatis III (输入/输出映射)
系列文章目录 实习笔记 -- Spring基础 实习笔记 -- IOC反转控制(xml配置文件 + 注解) 实习笔记 -- AOP开发I 实习笔记-- AOP开发II(AOP中Advice的类型) 实 ...
- MyBatis官方文档-XML 映射文件
最近更新: 15 七月 2019|版本: 3.5.2 文章目录 XML 映射文件 insert, update 和 delete sql 结果映射 高级结果映射 结果映射(resultMap) id ...
- mybatis学习笔记(7)-输出映射
2019独角兽企业重金招聘Python工程师标准>>> mybatis学习笔记(7)-输出映射 标签: mybatis [TOC] 本文主要讲解mybatis的输出映射. 输出映射有 ...
- 框架:Mybatis开发规范及输入输出映射配置时注意事件
程序员需要编写mapper.xml映射文件 程序员编写mapper接口需要遵循一些开发规范,mybatis可以自动生成mapper接口实现类代理对象. 1.开发规范: 1.在mapper.xml中na ...
最新文章
- 字节终面:CPU 是如何读写内存的?
- 前端高效开发必备的 js 库梳理
- Linux:文件描述符
- sqlserver2008安装报错 “Previous releases of Microsoft Visual Studio 2008″ failed.
- Java中使用foreach带来的一些问题
- Tomcat源码下载地址
- CnOpenData中国上市公司投资者关系管理数据
- NBIoT接收十六进制数据格式转化
- 6. 抹平差异,统一类型转换服务ConversionService
- Microsoft XBOX 360 Project Natal 体感装置2010年6月15正式发布产品正式命名为“Kinect”...
- 计算机微博实验报告,网络信息交流的工具与模式(实验报告).doc
- mac 命令行查看DNS
- 双重否定的翻译 百度翻译 VS. 谷歌翻译
- pd.read_excel出现xlrd.biffh.XLRDError: Excel xlsx file; not supported解决方案
- CS入门学习笔记3-廖雪峰python教程-函数
- 【tensorflow】生成.pb文件
- 从本质矩阵恢复相机矩阵
- 转发一篇好文:36氪翻译自medium的文章: 读书没有 KPI:为什么坚持“一年读 100 本书”没用?...
- 理解微波射频中的特性阻抗、VSWR 和反射系数
- Delphi 如何操作Excel
热门文章
- 一篇博客带你轻松应对java面试中的多线程与高并发
- HttpClient 如何设置超时时间
- 怎么查电脑系统版本_电脑系统垃圾清理利器,专业、小巧且免费,有这一个就够了...
- 合并报表编制采用的理论_合并报表操作的整体思路梳理
- web签名验证程序【跨服务器、中文字符签名方法】-php为例
- python字典输出_Python字典/循环输出
- c#写图像tif gdal_C# GDAL显示TIF
- python用户登录_【python】实例-用户登录系统
- 计算机考研择校分析,上海地区计算机考研择校分析
- 黑群晖docker清理缓存_群晖NAS后台容量查询及文件删除(附download station缓存删除方法)...