kotlin中使用mapstruct

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/linzhefeng89/article/details/100554386

前言

我们在java中使用mapstruct只需要简单的引入我们的相关的maven依赖就可以了,但是在kotlin中我们无法直接使用java的形式来处理,那么接下来我们将实现如何在kotlin中来使用我们的mapstruct。

创建实体和我们的dto以及我们的mapper

首先我们创建一个kotlin的项目,然后在我们的kotlin项目中分别创建以下的实体:

实体Flight

package com.kotlin.mapstruct.demo.entity

class Flight {

    var flightId: Int? = null

    var flightName: String? = null

}

转换以后的实体FlightDto

package com.kotlin.mapstruct.demo.dto

class FlightDto {

    var flightId: Int? = null

    var flightNewName: String? = null

}

转换的工具类FlightConverter

package com.kotlin.mapstruct.demo.mapper


import com.kotlin.mapstruct.demo.dto.FlightDto
import com.kotlin.mapstruct.demo.entity.Flight
import org.mapstruct.Mapper
import org.mapstruct.Mapping
import org.mapstruct.Mappings

@Mapper(componentModel = "spring")
interface FlightConverter {

    /**
     * 功能描述: 实现实体的转换
     */
    @Mappings(Mapping(target = "flightNewName", source = "flightName"), Mapping(target = "flightId", source = "flightId"))
    fun convertToDto(flight: Flight) : FlightDto

    /**
     * 功能描述: 实现集合的转换
     */
    fun convertToDtos(flights: List<Flight>) : List<FlightDto>
}

构建项目

到此处我们的整个实现的流程和我们的java是一致的,如果是基于我们的java工程我们只需要clean下然后编译下就可以了,但是在我们的kotlin中这样是不行的我们必须按照以下步骤来实现。
clean项目=》build项目【或者ctrl+F9】=》使用kotlin:kpta插件=》build项目【或者ctrl+F9】这样才算完成我们的mapper的生成。
在这里插入图片描述

打包项目

接着是我们的项目打包,当我们使用到mapstruct插件的时候不能直接package进行打包这样打出来的包是没有生成我们的mapper的实现的我们需要按照以下的方式进行打包:
clean项目=》build项目【或者ctrl+F9】=》使用kotlin:kpta插件=》package项目

懒人解决方案

我们还可以直接使用组合的maven的命令的形式来组合我们自定义的打包或者编译的实现,直接新建一个maven命令来实现打包一体化

clean compile kotlin:kapt package

在这里插入图片描述
编译的我们也可以一样的方式来实现

clean compile kotlin:kapt compile

有不理解的地方大家可以直接到github上直接下载本章节的demo例子自己验证整个的过程:https://github.com/lazyboyl/kotlin-mapstruct-demo

猜你喜欢

转载自blog.csdn.net/linzhefeng89/article/details/100554386