2019独角兽企业重金招聘Python工程师标准>>>

这节主要介绍下如何调用其他的mapper

1.修改上节用到的FlightConverter,新增List的映射

@Mapper
interface FlightConverter {fun convertToDto(flight: Flight) : FlightDtofun convertToModel(flightDto: FlightDto) : Flightfun flightToDtos(cars: List<Flight>): List<FlightDto>fun dtoToFlights(cars: List<FlightDto>): List<Flight>
}

2.添加新的业务类

import java.time.LocalDatedata class Person(var firstName: String?,var lastName: String?,var phoneNumber: String?,var birthdate: LocalDate?,var flight: Flight?,var flights: List<Flight>) {// Necessary for MapStructconstructor() : this(null, null, null, null, null, listOf())
}import java.time.LocalDatedata class PersonDto(var firstName: String?,var lastName: String?,var phone: String?,var birthdate: LocalDate?,var flightDto: FlightDto?,var flights:List<FlightDto>) {// Necessary for MapStructconstructor() : this(null, null, null, null,null, listOf())
}

3.添加业务类的映射

//类中的方法,进行字段映射时会使用FlightConverter中定义的方法
@Mapper(uses = [FlightConverter::class])
interface PersonConverter {//配置对应字段@Mappings(value = [Mapping(source = "phoneNumber", target = "phone"),Mapping(source = "flight",target = "flightDto")])fun convertToDto(person: Person) : PersonDto//对convertToDto实现逆映射,如果如果有多个方法,可以通过name属性//指定,如@InheritInverseConfiguration(name = "convertToDto")@InheritInverseConfigurationfun convertToModel(personDto: PersonDto) : Person}

4.调用一下吧

 val converter = Mappers.getMapper(PersonConverter::class.java) // or PersonConverterImpl()val flight = Flight(flightId = 1,flightName = "CX 101")val person = Person("Samuel","Jackson","0123 334466",LocalDate.of(1948, 12, 21),flight, listOf(flight))println(person)val personDto = converter.convertToDto(person)println(personDto)val personModel = converter.convertToModel(personDto)println(personModel)

输出

Person(firstName=Samuel, lastName=Jackson, phoneNumber=0123 334466, birthdate=1948-12-21, flight=Flight(flightId=1, flightName=CX 101), flights=[Flight(flightId=1, flightName=CX 101)])
PersonDto(firstName=Samuel, lastName=Jackson, phone=0123 334466, birthdate=1948-12-21, flightDto=FlightDto(flightId=1, flightName=CX 101), flights=[FlightDto(flightId=1, flightName=CX 101)])
Person(firstName=Samuel, lastName=Jackson, phoneNumber=0123 334466, birthdate=1948-12-21, flight=Flight(flightId=1, flightName=CX 101), flights=[Flight(flightId=1, flightName=CX 101)])

发现已经生效了

转载于:https://my.oschina.net/weidedong/blog/1935696

kotlin使用mapstruct(二)相关推荐

  1. Kotlin实战指南二:变量、常量、静态常量

    转载请标明出处:https://blog.csdn.net/zhaoyanjun6/article/details/87811333 本文出自[赵彦军的博客] Kotlin初体验二:变量.常量.静态常 ...

  2. Kotlin教程(二)函数

    写在开头:本人打算开始写一个Kotlin系列的教程,一是使自己记忆和理解的更加深刻,二是可以分享给同样想学习Kotlin的同学.系列文章的知识点会以<Kotlin实战>这本书中顺序编写,在 ...

  3. Kotlin基础 (二)

    Kotlin基础 (二) 11_kotlin命令行交互式终端 12_kotlin函数加强 函数的本质 kotlin函数编写规则 实战编写一个计算器: 作业练习 14_kotlin字符串模版 15_ko ...

  4. Kotlin学习(二)Kotlin基础语法

    学习一门语言,我总是会先学习一下基本的语法.因为并不急着应用Kotlin去开发项目,所以,还是有很多的时间去学习.今天,简单的总结一下Kotlin的基本语法. 一.函数 1.有参有返回值函数 fun ...

  5. Kotlin专题「二」:变量(var与val)、常量、注释

    前言: 莫问良人长与短,从此山水不相逢. 一.概述   大家都知道 Kotlin 现在被 Gooogle 定为 Android 的官方开发语言.Kotlin 在项目中的使用将会越来越广泛,这也掀起了一 ...

  6. Kotlin Coroutine(二):作用域及取消

    一.协程作用域 定义协程必须指定其 CoroutineScope .CoroutineScope 可以对协程进行追踪,即使协程被挂起也是如此.同调度程序 (Dispatcher) 不同,Corouti ...

  7. Kotlin实战指南二十:flow

    转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/117370700 本文出自[赵彦军的博客] 文章目录 往期精彩文章 flow 是啥 ...

  8. Kotlin 系列(二) 基本语法(1)

    属性与变量 Kotlin 类中的属性,既可以使用关键字 var 声明为可变的,也可以用 val 声明为只能赋值一次的只读变量. 变量 /** *只读变量 */ val a: Int = 1 //立即赋 ...

  9. Kotlin学习系列(二)

    IF表达式 if在kotlin可以当做表达式使用跟java的三元操作符类似: var max = if( a > b ) a else b if分支可以使用代码块,最后一个表达式是返回值: va ...

最新文章

  1. 计算机从网络上启动,如何设置计算机以从网络驱动器启动
  2. 经Apache将tomcat转用80port这两个域名
  3. 【并查集+dp】Team
  4. vs2010跟vs2008比较增加了哪些功能
  5. html5 canvas气泡动画
  6. STM32CubeMX软件工程描述_USART配置过程
  7. 2020身高体重标准表儿童_2019年0~12岁儿童身高体重标准表出炉了,你家娃达标没...
  8. bzoj 3545: [ONTAK2010]Peaks Kruskal重构树
  9. xmind 软件画思维导图
  10. 重心法例题matlab,重心法--例子.ppt
  11. 【程序员如何买基金 九】基金定投的优势
  12. 美国人口与种族变迁史
  13. 6个常见的API接口在线管理平台
  14. SpringBoot整合Mybaits开发报java.lang.IllegalArgumentException: At least one base package must be specifie
  15. 变态java面试题一览
  16. 连接字符串的几种方式
  17. pandas内置数据集_Pandas数据分析实战01——Abalone Data Set(鲍鱼数据集)
  18. 实验3 手写字体识别【机器学习】
  19. 上传到linux服务器上的EXCEL、图片、文件地址获取不同
  20. IIS安装和使用URL重写工具-URL Rewrite

热门文章

  1. SAP B1 9.1 跟踪某个查询的执行
  2. 基于ARM-LINUX的温度传感器驱动-DS18B20
  3. 简记SqueezeNet
  4. mysql高可用性方案(2)
  5. 《重构:改善既有代码的设计》—第1章1.5节结语
  6. codevs——1044 拦截导弹(序列DP)
  7. 【chrome插件】web版微信接入图灵机器人API实现自动回复
  8. javascript基础知识总结
  9. 总结《An Introduction to Ray Tracing》
  10. LNK2026 module unsafe for SAFESEH image