spring boot + jpa + kotlin入门实例详解
spring boot +jpa的文章网络上已经有不少,这里主要补充一下用kotlin来做。
kotlin里面的data class来创建entity可以帮助我们减少不少的代码,比如现在这个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的开发者,真的可以考虑试试看。
不过,这里还有个小提示,在kotlin里,如果你不给user给出默认的构造函数,那是会报错的,报错信息为
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
提示是没有默认的构造函数,我们可以为user类的构造函数增加参数默认值来完成,就如同上面我写的样子。
题外话,在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入门实例详解 ,希望对大家有所帮助
上一篇: Nodejs断开重连redis
推荐阅读
-
使用Spring boot + jQuery上传文件(kotlin)功能实例详解
-
spring boot + jpa + kotlin入门实例详解
-
Spring boot的上传图片功能实例详解
-
spring boot application properties配置实例代码详解
-
详解spring boot jpa整合QueryDSL来简化复杂操作
-
Spring boot 使用mysql实例详解
-
Spring Boot入门创建小项目实例
-
Spring Boot和Thymeleaf整合结合JPA实现分页效果(实例代码)
-
Spring Boot如何优雅的使用多线程实例详解
-
Spring boot的上传图片功能实例详解