spring boot + jpa + kotlin入門實例

spring boot +jpa的文章網絡上已經有不少,這里主要補充一下用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給出默認的構造函數(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

提示是沒有默認的構造函數(shù)曾撤,我們可以為User類的構造函數(shù)增加參數(shù)默認值來完成端姚,就如同上面我寫的樣子。

題外話盾戴,在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的確少寫了非常多的代碼,這令我對這門語言也有所期待了极祸。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末慈格,一起剝皮案震驚了整個濱河市怠晴,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌浴捆,老刑警劉巖蒜田,帶你破解...
    沈念sama閱讀 218,941評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異选泻,居然都是意外死亡冲粤,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,397評論 3 395
  • 文/潘曉璐 我一進店門页眯,熙熙樓的掌柜王于貴愁眉苦臉地迎上來色解,“玉大人,你說我怎么就攤上這事餐茵】蒲郑” “怎么了?”我有些...
    開封第一講書人閱讀 165,345評論 0 356
  • 文/不壞的土叔 我叫張陵忿族,是天一觀的道長锣笨。 經常有香客問我,道長道批,這世上最難降的妖魔是什么错英? 我笑而不...
    開封第一講書人閱讀 58,851評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮隆豹,結果婚禮上椭岩,老公的妹妹穿的比我還像新娘。我一直安慰自己璃赡,他們只是感情好判哥,可當我...
    茶點故事閱讀 67,868評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著碉考,像睡著了一般塌计。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上侯谁,一...
    開封第一講書人閱讀 51,688評論 1 305
  • 那天锌仅,我揣著相機與錄音,去河邊找鬼墙贱。 笑死热芹,一個胖子當著我的面吹牛,可吹牛的內容都是我干的惨撇。 我是一名探鬼主播伊脓,決...
    沈念sama閱讀 40,414評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼串纺!你這毒婦竟也來了丽旅?” 一聲冷哼從身側響起椰棘,我...
    開封第一講書人閱讀 39,319評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎榄笙,沒想到半個月后邪狞,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經...
    沈念sama閱讀 45,775評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡茅撞,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年帆卓,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片米丘。...
    茶點故事閱讀 40,096評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡剑令,死狀恐怖,靈堂內的尸體忽然破棺而出拄查,到底是詐尸還是另有隱情吁津,我是刑警寧澤,帶...
    沈念sama閱讀 35,789評論 5 346
  • 正文 年R本政府宣布堕扶,位于F島的核電站碍脏,受9級特大地震影響,放射性物質發(fā)生泄漏稍算。R本人自食惡果不足惜典尾,卻給世界環(huán)境...
    茶點故事閱讀 41,437評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望糊探。 院中可真熱鬧钾埂,春花似錦、人聲如沸科平。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,993評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽匠抗。三九已至故源,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間汞贸,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,107評論 1 271
  • 我被黑心中介騙來泰國打工印机, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留矢腻,地道東北人。 一個月前我還...
    沈念sama閱讀 48,308評論 3 372
  • 正文 我出身青樓射赛,卻偏偏與公主長得像多柑,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子楣责,可洞房花燭夜當晚...
    茶點故事閱讀 45,037評論 2 355

推薦閱讀更多精彩內容