天天看点

用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,如需转载请自行联系原作者