Kotlin之在Gradle中无参(no-arg)编译器插件的使用详解
1、前言
最近在用Kotlin+Spring Boot写一个后端项目,实体类习惯性地用了Kotlin中的data class,但是Spring要求要有一个无参的构造函数,否则可能会抛出java.sql.SQLDataException。要使data class能够生成一个无参的构造函数,有两种方法可以做到:
1.给data class的构造函数中的每一个参数都赋上默认值。比如:
data class User( @TableId(value = "id", type = IdType.AUTO) var id: Int?=-1, var userName: String?=null, //用户名 var age: Int?=null, //年龄 var password: String?=null, //密码 var name: String?=null, //姓名 var email: String?=null //邮箱 ) : Serializable
2.使用无参编译器插件no-arg。下面我们就来看看这种方法。
2、具体步骤
2.1 添加插件依赖
首先需要在工程的build.gradle中添加no-arg插件的依赖,版本跟Kotlin的版本一致:
plugins { …… id "org.jetbrains.kotlin.plugin.noarg" version "1.3.41" }
我用的是plugins的形式,如果你使用的是buildscript 块的话就可以这样添加:
buildscript { dependencies { classpath "org.jetbrains.kotlin:kotlin-noarg:1.3.41" } } apply plugin: "kotlin-noarg"
2.2 指定无参注解列表
说实话,在看官方文档时这一步并不好理解,这里只描述我经过自己的实践之后得出的经验。首先创建一个注解类,类名我们可以定为NoArg:
annotation class NoArg
然后最关键一步来了,回到工程的build.gradle文件,添加无参注解列表:
noArg { annotation("com.lindroid.projectname.annotation.NoArg") }
annotation中的路径就是我们创建的NoArg注解类所在的包目录。路径一定要写好,不要出错!此时无参插件就已经配置好了。我们可以在data class前面添加@NoArg注解,这样编译器就能为其生成一个无参构造函数。使用示例如下:
@NoArg data class User( @TableId(value = "id", type = IdType.AUTO) var id: Int?, var userName: String?, //用户名 var age: Int?, //年龄 var password: String?, //密码 var name: String?, //姓名 var email: String? //邮箱 ) : Serializable
2.3 kotlin-jpa中的无参注解
如果你的项目中已经添加了kotlin-jpa插件,那么基本上就不必单独添加无参插件了。kotlin-jpa对无参插件做了包装,当你使用 @Entity、 @Embeddable 与 @MappedSuperclass这几个注解时,都会默认支持无参注解的。
3、参考文章
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
- Android 使用gradle打包Assets目录的案例
- 使用idea和gradle编译spring5源码的方法步骤
- Gradle的使用教程详解
- IDEA使用Gradle构建SpringBoot项目工程的详细教程
- 在IDEA里gradle配置和使用的方法步骤
- Android Studio和Gradle使用不同位置JDK的问题解决
- Jenkins使用Gradle编译Android项目详解
- AndroidStduio3.0 使用gradle将module打包jar文件的方法
- 使用Gradle做Java代码质量检查的方法示例
- Gradle进阶使用结合Sonarqube进行代码审查的方法
- Android使用Gradle依赖配置compile、implementation与api的区别介绍
- Gradle的基本使用
相关文章
使用AccessibilityService实现微信自动切换账号功能
这篇文章主要为大家详细介绍了使用AccessibilityService实现微信自动切换账号功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下2019-12-12android将图片转换存到数据库再从数据库读取转换成图片实现代码
有时候我们想把图片存入到数据库中,尽管这不是一种明智的选择,但有时候还是不得以会用到,下面说说将图片转换成byte[]数组存入到数据库中去,并从数据库中取出来转换成图像显示出来2013-11-11Android LocationManager获取经度与纬度等地理信息
这篇文章主要介绍了Android LocationManager获取经度与纬度等地理信息的相关资料,希望通过本站大家能掌握这样的知识,需要的朋友可以参考下2017-09-09Android ListView之setEmptyView正确使用方法
这篇文章主要介绍了Android ListView之setEmptyView正确使用方法的相关资料,希望通过本文能帮助到大家使用该方法,需要的朋友可以参考下2017-09-09
最新评论