kotlin使用mapstruct(二)
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(二)相关推荐
- Kotlin实战指南二:变量、常量、静态常量
转载请标明出处:https://blog.csdn.net/zhaoyanjun6/article/details/87811333 本文出自[赵彦军的博客] Kotlin初体验二:变量.常量.静态常 ...
- Kotlin教程(二)函数
写在开头:本人打算开始写一个Kotlin系列的教程,一是使自己记忆和理解的更加深刻,二是可以分享给同样想学习Kotlin的同学.系列文章的知识点会以<Kotlin实战>这本书中顺序编写,在 ...
- Kotlin基础 (二)
Kotlin基础 (二) 11_kotlin命令行交互式终端 12_kotlin函数加强 函数的本质 kotlin函数编写规则 实战编写一个计算器: 作业练习 14_kotlin字符串模版 15_ko ...
- Kotlin学习(二)Kotlin基础语法
学习一门语言,我总是会先学习一下基本的语法.因为并不急着应用Kotlin去开发项目,所以,还是有很多的时间去学习.今天,简单的总结一下Kotlin的基本语法. 一.函数 1.有参有返回值函数 fun ...
- Kotlin专题「二」:变量(var与val)、常量、注释
前言: 莫问良人长与短,从此山水不相逢. 一.概述 大家都知道 Kotlin 现在被 Gooogle 定为 Android 的官方开发语言.Kotlin 在项目中的使用将会越来越广泛,这也掀起了一 ...
- Kotlin Coroutine(二):作用域及取消
一.协程作用域 定义协程必须指定其 CoroutineScope .CoroutineScope 可以对协程进行追踪,即使协程被挂起也是如此.同调度程序 (Dispatcher) 不同,Corouti ...
- Kotlin实战指南二十:flow
转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/117370700 本文出自[赵彦军的博客] 文章目录 往期精彩文章 flow 是啥 ...
- Kotlin 系列(二) 基本语法(1)
属性与变量 Kotlin 类中的属性,既可以使用关键字 var 声明为可变的,也可以用 val 声明为只能赋值一次的只读变量. 变量 /** *只读变量 */ val a: Int = 1 //立即赋 ...
- Kotlin学习系列(二)
IF表达式 if在kotlin可以当做表达式使用跟java的三元操作符类似: var max = if( a > b ) a else b if分支可以使用代码块,最后一个表达式是返回值: va ...
最新文章
- 计算机从网络上启动,如何设置计算机以从网络驱动器启动
- 经Apache将tomcat转用80port这两个域名
- 【并查集+dp】Team
- vs2010跟vs2008比较增加了哪些功能
- html5 canvas气泡动画
- STM32CubeMX软件工程描述_USART配置过程
- 2020身高体重标准表儿童_2019年0~12岁儿童身高体重标准表出炉了,你家娃达标没...
- bzoj 3545: [ONTAK2010]Peaks Kruskal重构树
- xmind 软件画思维导图
- 重心法例题matlab,重心法--例子.ppt
- 【程序员如何买基金 九】基金定投的优势
- 美国人口与种族变迁史
- 6个常见的API接口在线管理平台
- SpringBoot整合Mybaits开发报java.lang.IllegalArgumentException: At least one base package must be specifie
- 变态java面试题一览
- 连接字符串的几种方式
- pandas内置数据集_Pandas数据分析实战01——Abalone Data Set(鲍鱼数据集)
- 实验3 手写字体识别【机器学习】
- 上传到linux服务器上的EXCEL、图片、文件地址获取不同
- IIS安装和使用URL重写工具-URL Rewrite