spring boot + jpa + kotlin入門實(shí)例詳解
spring boot +jpa的文章網(wǎng)絡(luò)上已經(jīng)有不少,這里主要補(bǔ)充一下用kotlin來做。
kotlin里面的data class來創(chuàng)建entity可以幫助我們減少不少的代碼,比如現(xiàn)在這個(gè)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 = "")
連我這個(gè)用C#的人都覺得動心,如果你是Java的開發(fā)者,真的可以考慮試試看。
不過,這里還有個(gè)小提示,在kotlin里,如果你不給User給出默認(rèn)的構(gòu)造函數(shù),那是會報(bào)錯的,報(bào)錯信息為
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那樣能把那么長的代碼縮成一行,一個(gè)entity一行就寫完,這感覺很不要太好。
另外,在Java里,使用CrudRepository時(shí),這樣用就行:
@Autowired UserRepository repository;
但是在kotlin里,編譯都無法通過,會報(bào)出這樣一條錯誤:
property must be initialized or be abstract
要解決這個(gè)問題,需要增加lateinit,就像 這樣:
@Autowired lateinit var repository: UserRepository
其他的基本跟Java一致。
本文提到的源碼放在github
在寫spring boot程序時(shí),kotlin的確少寫了非常多的代碼,這令我對這門語言也有所期待了。
以上所述是小編給大家介紹的spring boot + jpa + kotlin入門實(shí)例詳解 ,希望對大家有所幫助,如果大家有任何疑問歡迎給我留言,小編會及時(shí)回復(fù)大家的!
- 關(guān)于Spring Boot和Kotlin的聯(lián)合開發(fā)
- 使用Spring boot + jQuery上傳文件(kotlin)功能實(shí)例詳解
- Spring Boot 與 Kotlin 使用JdbcTemplate連接MySQL數(shù)據(jù)庫的方法
- Spring Boot 與 kotlin 使用Thymeleaf模板引擎渲染web視圖的方法
- Kotlin + Spring Boot 請求參數(shù)驗(yàn)證的代碼實(shí)例
- 詳解用Kotlin寫一個(gè)基于Spring Boot的RESTful服務(wù)
- Spring Boot 與 Kotlin 使用Redis數(shù)據(jù)庫的配置方法
- Spring Boot 與 Kotlin 上傳文件的示例代碼
- Spring Boot與Kotlin定時(shí)任務(wù)的示例(Scheduling Tasks)
- 利用Kotlin + Spring Boot實(shí)現(xiàn)后端開發(fā)
相關(guān)文章
java 中Comparable與Comparator詳解與比較
這篇文章主要介紹了java 中Comparable與Comparator詳解與比較的相關(guān)資料,需要的朋友可以參考下2017-04-04
@WebFilter在SpringBoot無效的原因分析和解決方案
使用Ruoyi的demo部署成功后,發(fā)現(xiàn)js、css等靜態(tài)文件都進(jìn)入了過濾器,但是發(fā)現(xiàn)靜態(tài)文件沒有使用瀏覽器緩存,新建BrowserCacheFilter.java并增加@WebFilter處理,應(yīng)用自動重啟后發(fā)現(xiàn)@WebFilter無效,所以本文給大家介紹了@WebFilter在SpringBoot無效的原因分析和解決方案2024-03-03
為什么wait和notify必須放在synchronized中使用
這篇文章主要介紹了為什么wait和notify必須放在synchronized中使用,文章圍繞主題的相關(guān)問題展開詳細(xì)介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考以參考一下2022-05-05
Spring Security中防護(hù)CSRF功能詳解
這篇文章主要介紹了Spring Security中防護(hù)CSRF功能,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-01-01
spring boot里增加表單驗(yàn)證hibernate-validator并在freemarker模板里顯示錯誤信息(推
這篇文章主要介紹了spring boot里增加表單驗(yàn)證hibernate-validator并在freemarker模板里顯示錯誤信息的相關(guān)資料,需要的朋友可以參考下2018-01-01

