天天看點

用Kotlin寫一個基于Spring Boot的RESTful服務

Spring太複雜了,配置這個東西簡直就是浪費生命。尤其在沒有什麼并發壓力,随便搞一個RESTful服務

讓整個業務跑起來先的情況下,更是麼有必要糾結在一堆的XML配置上。顯然這麼想的人是很多的,于是就

有了Spring Boot。又由于Java 8太墨迹于是有了Kotlin。

資料源使用MySql。通過Spring Boot這個基本不怎麼配置的,不怎麼微的微架構的Spring Data JPA和Hibernate

來通路資料。

這裡使用Gradle來處理依賴。

首先下載下傳官網給的初始項目:

然後跳轉到<code>gs-accessing-data-jpa/initial</code>目錄下。

用IntelliJ IDEA打開這個項目,選擇使用Gradle管理依賴。

之後Gradle會自動下載下傳依賴項。這會花一點時間。你可以去和妹子聊一會兒了。。

如果你覺得這樣很麻煩的話,可以建立一個Gradle項目。之後根據上面的例子建立一個目錄:

但是無論是用上面的哪種方式,最後都需要在Gradle檔案中添加依賴項。這個Gradle檔案是<code>build.gradle</code>。添加完依賴項

之後是這樣的:

在目錄<code>src/main/resources/application.properties</code>下編輯配置檔案。預設是沒有這個檔案和相應的目錄的,

自行建立。

無需java的配置類,或者什麼XML配置檔案。

使用配置項<code>hibernate.ddl-auto = true</code>,項目所需的資料庫和相關表、列會自動根據定義的實體類建立。點選

<a href="https://docs.jboss.org/hibernate/orm/4.3/manual/en-US/html/ch03.html#configuration-optional">這裡</a>

檢視更多配置的說明。

這裡定義一個簡單地實體類,并聲明為JPA實體。這個類的檔案存放在目錄<code>src\main\java\hello\Entities\</code>下。

這裡使用了Kotlin裡的data class。data class最大的優點就是省去了定義getter和setter,以及<code>toString()</code>

的時間。這些都已經預設實作。是以,在使用data class的對象的時候直接可以使用<code>name</code>、<code>email</code>當然還有<code>id</code>這樣的屬性直接通路。

無參數的構造函數是給JPA用的,是以通路級别設定為<code>protected</code>。主構造函數是用來建立和資料庫操作相關的對象的。

整個的整個類被<code>@Entity</code>修飾,說明整個類是一個JPA的實體類。<code>@Table</code>聲明用來表明整個類對應的資料庫表是哪一個。

<code>@Id</code>修飾的<code>User</code>的屬性<code>id</code>,會被JPA認為的對象的ID。同時<code>@GeneratedValue(strategy = GenerationType.AUTO)</code>

的修飾說明這個ID是自動生成的。

另外的兩個屬性<code>name</code>和<code>email</code>被<code>@Column(nullable = false)</code>修飾。說明兩個列都是不可以為空的,同時說明兩個列的名字

和屬性的名字是相同的。如果不同可以這樣<code>@Column(nullable = false, name="XXXXXX")</code>。

這個就更加的簡單了。JPA會自動在運作時建立資料庫需要的增删改查的實作。這個實作可以是根據我們給出的<code>Repository</code>

來實作的。

根據<code>User</code>類,我們來實作一個<code>UserDao</code>(Repository):

泛型的類型參數分别是user和user的id的類型:<code>User</code>, <code>Long</code>。我們可以定義增删改查之外的Query。比如在上面的代碼裡

資料庫,Rest服務和書庫的連接配接都已經搞定。那麼,我們就來測試一下。

我們在目錄<code>src\main\java\hello\Controllers</code>建立一個<code>UserController</code>類來測試和資料庫的資料存取。

測試URL可以是這樣的:

/delete?id=3, 删除id值為3的user。

傳回值的話會報錯。

參考文章:

<a href="http://blog.netgloo.com/2014/10/27/using-mysql-in-spring-boot-via-spring-data-jpa-and-hibernate/">http://blog.netgloo.com/2014/10/27/using-mysql-in-spring-boot-via-spring-data-jpa-and-hibernate/</a>

<a href="https://spring.io/guides/gs/accessing-data-jpa/">https://spring.io/guides/gs/accessing-data-jpa/</a>

歡迎加群互相學習,共同進步。QQ群:iOS: 58099570 | Android: 572064792 | Nodejs:329118122 做人要厚道,轉載請注明出處!

本文轉自張昺華-sky部落格園部落格,原文連結:http://www.cnblogs.com/sunshine-anycall/p/5263511.html,如需轉載請自行聯系原作者