Kotlin之在Gradle中無參(no-arg)編譯器插件的使用詳解
1、前言
最近在用Kotlin+Spring Boot寫一個(gè)后端項(xiàng)目,實(shí)體類習(xí)慣性地用了Kotlin中的data class,但是Spring要求要有一個(gè)無參的構(gòu)造函數(shù),否則可能會(huì)拋出java.sql.SQLDataException。要使data class能夠生成一個(gè)無參的構(gòu)造函數(shù),有兩種方法可以做到:
1.給data class的構(gòu)造函數(shù)中的每一個(gè)參數(shù)都賦上默認(rèn)值。比如:
data class User( @TableId(value = "id", type = IdType.AUTO) var id: Int?=-1, var userName: String?=null, //用戶名 var age: Int?=null, //年齡 var password: String?=null, //密碼 var name: String?=null, //姓名 var email: String?=null //郵箱 ) : Serializable
2.使用無參編譯器插件no-arg。下面我們就來看看這種方法。
2、具體步驟
2.1 添加插件依賴
首先需要在工程的build.gradle中添加no-arg插件的依賴,版本跟Kotlin的版本一致:
plugins {
……
id "org.jetbrains.kotlin.plugin.noarg" version "1.3.41"
}
我用的是plugins的形式,如果你使用的是buildscript 塊的話就可以這樣添加:
buildscript {
dependencies {
classpath "org.jetbrains.kotlin:kotlin-noarg:1.3.41"
}
}
apply plugin: "kotlin-noarg"
2.2 指定無參注解列表
說實(shí)話,在看官方文檔時(shí)這一步并不好理解,這里只描述我經(jīng)過自己的實(shí)踐之后得出的經(jīng)驗(yàn)。首先創(chuàng)建一個(gè)注解類,類名我們可以定為NoArg:
annotation class NoArg
然后最關(guān)鍵一步來了,回到工程的build.gradle文件,添加無參注解列表:
noArg {
annotation("com.lindroid.projectname.annotation.NoArg")
}
annotation中的路徑就是我們創(chuàng)建的NoArg注解類所在的包目錄。路徑一定要寫好,不要出錯(cuò)!此時(shí)無參插件就已經(jīng)配置好了。我們可以在data class前面添加@NoArg注解,這樣編譯器就能為其生成一個(gè)無參構(gòu)造函數(shù)。使用示例如下:
@NoArg data class User( @TableId(value = "id", type = IdType.AUTO) var id: Int?, var userName: String?, //用戶名 var age: Int?, //年齡 var password: String?, //密碼 var name: String?, //姓名 var email: String? //郵箱 ) : Serializable
2.3 kotlin-jpa中的無參注解
如果你的項(xiàng)目中已經(jīng)添加了kotlin-jpa插件,那么基本上就不必單獨(dú)添加無參插件了。kotlin-jpa對(duì)無參插件做了包裝,當(dāng)你使用 @Entity、 @Embeddable 與 @MappedSuperclass這幾個(gè)注解時(shí),都會(huì)默認(rèn)支持無參注解的。
3、參考文章
Kotlin官方文檔
以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持我們。
上一篇:Android仿微信錄制語音功能
欄 目:Android
下一篇:android簡單自定義View實(shí)現(xiàn)五子棋
本文標(biāo)題:Kotlin之在Gradle中無參(no-arg)編譯器插件的使用詳解
本文地址:http://www.jygsgssxh.com/a1/Android/9099.html
您可能感興趣的文章
- 01-10Android Gradle開發(fā)指南詳解
- 01-10Kotlin 擴(kuò)展函數(shù)和擴(kuò)展屬性的使用方法
- 01-10Android gradle配置抽取合并的操作步驟
- 01-10android 使用kotlin 實(shí)現(xiàn)點(diǎn)擊更換全局語言(中日英切換)
- 01-10Kotlin中的對(duì)象表達(dá)式和對(duì)象聲明的具體使用
- 01-10使用kotlin協(xié)程提高app性能(譯)
- 01-10擁抱kotlin之如何習(xí)慣使用kotlin高階函數(shù)
- 01-10Kotlin如何安全訪問lateinit變量的實(shí)現(xiàn)


閱讀排行
本欄相關(guān)
- 01-10Android自定義View之繪制圓形頭像功能
- 01-10Android實(shí)現(xiàn)雙擊返回鍵退出應(yīng)用實(shí)現(xiàn)方
- 01-10android實(shí)現(xiàn)簡單計(jì)算器功能
- 01-10android實(shí)現(xiàn)記住用戶名和密碼以及自動(dòng)
- 01-10C++自定義API函數(shù)實(shí)現(xiàn)大數(shù)相乘算法
- 01-10Android 友盟第三方登錄與分享的實(shí)現(xiàn)代
- 01-10android實(shí)現(xiàn)指紋識(shí)別功能
- 01-10如何給Flutter界面切換實(shí)現(xiàn)點(diǎn)特效
- 01-10Android實(shí)現(xiàn)圓形漸變加載進(jìn)度條
- 01-10Emoji表情在Android JNI中的兼容性問題詳
隨機(jī)閱讀
- 08-05dedecms(織夢(mèng))副欄目數(shù)量限制代碼修改
- 04-02jquery與jsp,用jquery
- 01-10C#中split用法實(shí)例總結(jié)
- 01-11Mac OSX 打開原生自帶讀寫NTFS功能(圖文
- 01-10delphi制作wav文件的方法
- 08-05織夢(mèng)dedecms什么時(shí)候用欄目交叉功能?
- 01-10使用C語言求解撲克牌的順子及n個(gè)骰子
- 01-11ajax實(shí)現(xiàn)頁面的局部加載
- 01-10SublimeText編譯C開發(fā)環(huán)境設(shè)置
- 08-05DEDE織夢(mèng)data目錄下的sessions文件夾有什


