spring boot + jpa + kotlin入門實例詳解
spring boot +jpa的文章網(wǎng)絡(luò)上已經(jīng)有不少,這里主要補充一下用kotlin來做。
kotlin里面的data class來創(chuàng)建entity可以幫助我們減少不少的代碼,比如現(xiàn)在這個User的Entity,這是Java版本的:
@Entity public class User { @Id @GeneratedValue(strategy = GenerationType.AUTO) private long id; private String firstName; private String lastName; public String getLastName() { return lastName; } public void setLastName(String lastName) { this.lastName = lastName; } public long getId() { return id; } public void setId(long id) { this.id = id; } public String getFirstName() { return firstName; } public void setFirstName(String firstName) { this.firstName = firstName; } }
上面的那一大段變成kotlin,就像下面的這樣的:
@Entity data class User(@Id @GeneratedValue(strategy = GenerationType.AUTO) val id: Long = 0L, val firstName: String = "", val lastName: String = "")
連我這個用C#的人都覺得動心,如果你是Java的開發(fā)者,真的可以考慮試試看。
不過,這里還有個小提示,在kotlin里,如果你不給User給出默認(rèn)的構(gòu)造函數(shù),那是會報錯的,報錯信息為
o.s.boot.web.support.ErrorPageFilter : Forwarding to error page from request / due to exception No default constructor for entity: : com._1b2m.springbootkotin.User; nested exception is org.hibernate.InstantiationException: No default constructor for entity: : com._1b2m.springbootkotin.User
提示是沒有默認(rèn)的構(gòu)造函數(shù),我們可以為User類的構(gòu)造函數(shù)增加參數(shù)默認(rèn)值來完成,就如同上面我寫的樣子。
題外話,在Java里,IDE可以幫助我們生成getter和setter。但是就算是這樣,也沒有像kotlin那樣能把那么長的代碼縮成一行,一個entity一行就寫完,這感覺很不要太好。
另外,在Java里,使用CrudRepository時,這樣用就行:
@Autowired UserRepository repository;
但是在kotlin里,編譯都無法通過,會報出這樣一條錯誤:
property must be initialized or be abstract
要解決這個問題,需要增加lateinit,就像 這樣:
@Autowired lateinit var repository: UserRepository
其他的基本跟Java一致。
本文提到的源碼放在github
在寫spring boot程序時,kotlin的確少寫了非常多的代碼,這令我對這門語言也有所期待了。
以上所述是小編給大家介紹的spring boot + jpa + kotlin入門實例詳解 ,希望對大家有所幫助,如果大家有任何疑問歡迎給我留言,小編會及時回復(fù)大家的!
- 關(guān)于Spring Boot和Kotlin的聯(lián)合開發(fā)
- 使用Spring boot + jQuery上傳文件(kotlin)功能實例詳解
- Spring Boot 與 Kotlin 使用JdbcTemplate連接MySQL數(shù)據(jù)庫的方法
- Spring Boot 與 kotlin 使用Thymeleaf模板引擎渲染web視圖的方法
- Kotlin + Spring Boot 請求參數(shù)驗證的代碼實例
- 詳解用Kotlin寫一個基于Spring Boot的RESTful服務(wù)
- Spring Boot 與 Kotlin 使用Redis數(shù)據(jù)庫的配置方法
- Spring Boot 與 Kotlin 上傳文件的示例代碼
- Spring Boot與Kotlin定時任務(wù)的示例(Scheduling Tasks)
- 利用Kotlin + Spring Boot實現(xiàn)后端開發(fā)
相關(guān)文章
詳解Java volatile 內(nèi)存屏障底層原理語義
為了保證內(nèi)存可見性,java 編譯器在生成指令序列的適當(dāng)位置會插入內(nèi)存屏障指令來禁止特定類型的處理器重排序。為了實現(xiàn) volatile 內(nèi)存語義,JMM 會分別限制這兩種類型的重排序類型2021-09-09java應(yīng)用程序如何自定義log4j配置文件的位置
這篇文章主要介紹了java應(yīng)用程序如何自定義log4j配置文件的位置,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-12-12spring?boot?使用?@Scheduled?注解和?TaskScheduler?接口實現(xiàn)定時任務(wù)
這篇文章主要介紹了spring?boot?使用?@Scheduled?注解和?TaskScheduler?接口實現(xiàn)定時任務(wù),本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-06-06Spring中@EnableScheduling注解的工作原理詳解
這篇文章主要介紹了Spring中@EnableScheduling注解的工作原理詳解,@EnableScheduling是 Spring Framework 提供的一個注解,用于啟用Spring的定時任務(wù)(Scheduling)功能,需要的朋友可以參考下2024-01-01Springboot報錯java.lang.NullPointerException: null問題
這篇文章主要介紹了Springboot報錯java.lang.NullPointerException: null問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-11-11