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、參考文章
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- Android 使用gradle打包Assets目錄的案例
- 使用idea和gradle編譯spring5源碼的方法步驟
- Gradle的使用教程詳解
- IDEA使用Gradle構(gòu)建SpringBoot項(xiàng)目工程的詳細(xì)教程
- 在IDEA里gradle配置和使用的方法步驟
- Android Studio和Gradle使用不同位置JDK的問題解決
- Jenkins使用Gradle編譯Android項(xiàng)目詳解
- AndroidStduio3.0 使用gradle將module打包jar文件的方法
- 使用Gradle做Java代碼質(zhì)量檢查的方法示例
- Gradle進(jìn)階使用結(jié)合Sonarqube進(jìn)行代碼審查的方法
- Android使用Gradle依賴配置compile、implementation與api的區(qū)別介紹
- Gradle的基本使用
相關(guān)文章
Android GridView實(shí)現(xiàn)滾動(dòng)到指定位置的方法
這篇文章主要介紹了Android GridView實(shí)現(xiàn)滾動(dòng)到指定位置的方法,本文介紹了4個(gè)相關(guān)的方法,分別對(duì)它們做了講解,需要的朋友可以參考下2015-06-06Android 阿里云OSS文件上傳的實(shí)現(xiàn)示例
這篇文章主要介紹了Android 阿里云OSS文件上傳的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-08-08Android中實(shí)現(xiàn)可滑動(dòng)的Tab的3種方式
這篇文章主要介紹了Android中實(shí)現(xiàn)可滑動(dòng)的Tab的3種方式,需要的朋友可以參考下2014-02-02使用AccessibilityService實(shí)現(xiàn)微信自動(dòng)切換賬號(hào)功能
這篇文章主要為大家詳細(xì)介紹了使用AccessibilityService實(shí)現(xiàn)微信自動(dòng)切換賬號(hào)功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-12-12android將圖片轉(zhuǎn)換存到數(shù)據(jù)庫(kù)再?gòu)臄?shù)據(jù)庫(kù)讀取轉(zhuǎn)換成圖片實(shí)現(xiàn)代碼
有時(shí)候我們想把圖片存入到數(shù)據(jù)庫(kù)中,盡管這不是一種明智的選擇,但有時(shí)候還是不得以會(huì)用到,下面說說將圖片轉(zhuǎn)換成byte[]數(shù)組存入到數(shù)據(jù)庫(kù)中去,并從數(shù)據(jù)庫(kù)中取出來轉(zhuǎn)換成圖像顯示出來2013-11-11Android LocationManager獲取經(jīng)度與緯度等地理信息
這篇文章主要介紹了Android LocationManager獲取經(jīng)度與緯度等地理信息的相關(guān)資料,希望通過本站大家能掌握這樣的知識(shí),需要的朋友可以參考下2017-09-09Android快速開發(fā)系列 10個(gè)常用工具類實(shí)例代碼詳解
今天特此整理出10個(gè)基本每個(gè)項(xiàng)目中都會(huì)使用的工具類,用于快速開發(fā),對(duì)android開發(fā)常用工具類感興趣的朋友跟隨小編一起看看吧2018-09-09Android ListView之setEmptyView正確使用方法
這篇文章主要介紹了Android ListView之setEmptyView正確使用方法的相關(guān)資料,希望通過本文能幫助到大家使用該方法,需要的朋友可以參考下2017-09-09Android SurfaceView預(yù)覽變形完美解決方法
本篇文章主要介紹了Android SurfaceView預(yù)覽變形完美解決方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-04-04