3.2Adding custom methods to mappers(在映射器中添加自定义方法)

有些情况下,我们需要实现一些MapStruct无法直接自动生成的复杂类型间映射。一种方式是复用其他已实现的映射。或者,在使用java8或者更高版本的时候,可以直接在映射器接口中实现自定义方法作为默认方法,如果参数和返回类型匹配, 生成的代码将调用默认方法。

举个例子,加入我们要把Person映射成PersonDto,因为涉及到一些特殊的逻辑,MapStruct无法直接将映射代码生成,您可以从前面的示例中定义映射器, 如下所示:

Example 8. Mapper which defines a custom mapping with a default method

@Mapper
public interface CarMapper { @Mappings({...})
CarDto carToCarDto(Car car); default PersonDto personToPersonDto(Person person) {
//hand-written mapping logic
}
}

由 MapStruct 生成的实现方法 carToCarDto (),在映射【司机】属性时, carToCarDto () 中生成的代码将调用手动实现的 personToPersonDto () 方法。

映射程序还可以以抽象类的形式而不是接口来定义, 并直接在该映射器类中实现自定义方法。在这种情况下, MapStruct 将生成具有所有抽象方法实现的抽象类的扩展。此方法在声明默认方法方面的优点是可以在映射器类中声明其他字段。

前面的示例中, 从Person到 PersonDto 的映射需要一些特殊的逻辑, 同样可以这样定义:

Example 9. Mapper defined by an abstract class

@Mapper
public abstract class CarMapper { @Mappings(...)
public abstract CarDto carToCarDto(Car car); public PersonDto personToPersonDto(Person person) {
//hand-written mapping logic
}
}

MapStruct 将生成 CarMapper 的子类, 并在声明为抽象的情况下实现 carToCarDto () 方法。在映射【司机】属性时, carToCarDto () 中生成的代码将调用手动实现的 personToPersonDto () 方法。

3.2Adding custom methods to mappers(在映射器中添加自定义方法)的更多相关文章

  1. 在mapper.xml映射文件中添加中文注释报错

    问题描述: 在写mapper.xml文件时,想给操作数据库语句添加一些中文注释,添加后运行报如下错误: 思考 可能是写了中文注释,编译器在解析xml文件时,未能成功转码,从而导致乱码.但是文件开头也采 ...

  2. mybatis 映射器(mappers) 配置说明 加载映射文件方式

    映射器(mappers) 既然 MyBatis 的行为已经由上述元素配置完了,我们现在就要定义 SQL 映射语句了.但是首先我们需要告诉 MyBatis 到哪里去找到这些语句. Java 在自动查找这 ...

  3. 深入浅出mybatis之映射器

    目录 概述 XML映射器 定义xml映射器 配置xml映射器 使用xml映射器 接口映射器 定义接口映射器 配置接口映射器 使用接口映射器 总结与对比 概述 映射器是MyBatis中最核心的组件之一, ...

  4. MyBatis 3 使用注解配置SQL映射器

    l 在映射器Mapper接口上使用注解 l 映射语句 @Insert,@Update,@Delete,@SeelctStatements l 结果映射 一对一映射 一对多映射 l 动态SQL @Sel ...

  5. 使用注解配置SQL映射器

    在上一章,我们看到了我们是怎样在映射器Mapper XML配置文件中配置映射语句的.MyBatis也支持使用注解来配置映射语句.当我们使用基于注解的映射器接口时,我们不再需要在XML配置文件中配置了. ...

  6. MyBatis 3(中文版) 第四章 使用注解配置SQL映射器

    本章将涵盖以下话题: l 在映射器Mapper接口上使用注解 l 映射语句 @Insert,@Update,@Delete,@SeelctStatements l 结果映射 一对一映射 一对多映射 l ...

  7. MyBatis02 MyBatis基础知识之Mapper映射器

    1 Mapper映射器是什么 是符合映射文件要求的接口 接口要求 a. 方法名要与sql的id一致. b. 方法的参数类型要与parameterType一致. c. 方法的返回类型要与resultTy ...

  8. SQL映射器Mapper接口(MyBatis)

    SQL映射器Mapper接口 MyBatis基于代理机制,可以让我们无需再写Dao的实现.直接把以前的dao接口定义成符合规则的Mapper. 注意事项: 1.接口必须以Mapper结尾,名字是Dom ...

  9. 【长文】Spring学习笔记(七):Mybatis映射器+动态SQL

    1 概述 本文主要讲述了如何使用MyBatis中的映射器以及动态SQL的配置. 2 MyBatis配置文件概览 MyBatis配置文件主要属性如下: <settings>:相关设置,键值对 ...

随机推荐

  1. Java实现图片内容无损任意角度旋转

    转自:http://blog.csdn.net/heliang7/article/details/7309394 主要问题是如何在图片做旋转后计算出新图片的长宽. 在java 2d和基本math库的帮 ...

  2. Js为Dom元素绑定事件须知

    为异步加载的Dom 元素绑定事件必须在加载完成之后绑定: $('body').load('LearnClickBinding.ashx');$('a').click(function () { ale ...

  3. 对简易网页版注册系统的制作(连接MySQL数据库)

    一.基本需求 二.设计思路: 1.首先创建一个与数据库数据属性对应的类User,并添加get和set方法. 2.之后建立另一个类UserDao用于生成一条完整的数据对象. 3.再建立一个类DButil ...

  4. 吴裕雄 Bootstrap 前端框架开发——Bootstrap 辅助类:"text-success" 类的文本样式

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  5. bitcoin01

    bitcoin, blockchain 本文只是初步表面认识比特币的笔记... 详细信息请看相关链接. 比特币除了耗电,耗硬盘存储空间,还有无法预测,无法控制的风险. 1. Satoshi_Nakam ...

  6. LATTICE 编程烧录器HW-USBN-2B使用说明

    HW-USBN-2B说明文档 1.       引脚定义 编程引脚 名称 编程设备引脚类型 描述 VCC 编程电压 输入 连接VCC到目标设备,典型的ICC=10Ma.板子设计必须考虑VCC的电流供应 ...

  7. php 实现店铺装修3

    /** * @title 装修店铺 * @param plate_id 是 int 店铺装修样式ID * @param type 是 int 模板样式子板块类型(4-海景.6-二宫格.8-三宫格.9- ...

  8. Commons BeanUtils 中对Map的操作

    CSDN学院招募微信小程序讲师啦 程序员简历优化指南! [观点]移动原生App开发 PK HTML 5开发 云端应用征文大赛,秀绝招,赢无人机! Commons BeanUtils 中对Map的操作 ...

  9. vim的几种模式

    Normal Mode 普通模式 功能:在这种模式下可以移动光标等. 进入:默认进入vim之后,处于这种模式.在其他模式下狂按ESC后进入此模式. Visual Mode 可视模式 功能:在这种模式下 ...

  10. k-近邻算法python代码实现(非常全)

    1.k近邻算法是学习机器学习算法最为经典和简单的算法,它是机器学习算法入门最好的算法之一,可以非常好并且快速地理解机器学习的算法的框架与应用.它是一种经典简单的分类算法,当然也可以用来解决回归问题.2 ...