为什么要写这篇文章
之前介绍了一下在旧版Gradle、SQLite上配置JOOQ,不过那篇文章实在是太旧了,在新版Gradle上已无法使用,也不兼容Java11。
关于如何配置用于 Gradle + M 的 jOOQ 3.11 代码自动生成的文档可谓少之又少,网络上大部分文档,要么是使用 Maven,要么是针对于早期版本的 jOOQ(并不向后兼容),而 jOOQ 官方文档又很不全面,以致于许多像我这样的萌新在初次接触 jooq 时踩了不少坑,浪费了不少宝贵的时间 :)
为何一定要使用 jOOQ
复制一下 别人对此的介绍:
JOOQ,全称Java Object Oriented Querying,即面向Java对象查询。它是Data Geekery公司研发的DA方案(Data Access Layer),主要解决两个问题:
- Hibernate 的抽象使得我们离SQL太远,对SQL的掌控力度弱
- JDBC 过于嘈杂,需要干的事情太多
JOOQ希望干的就是在上述两者中寻找一个最佳的平衡。它依据数据库中的表生成DA相关的代码,开发者将生成的代码引入项目中即可使用。
配置办法
官方文档 只贴了个代码,可以说是十分”友善”了
编辑 build.gradle
// Configure the Java plugin and the dependencies
apply plugin: 'java'
repositories {
mavenLocal()
mavenCentral()
}
dependencies {
//在此处放置你的项目的原有依赖
//添加jooq依赖
compile group: 'org.jooq', name: 'jooq', version: '3.11.5'
//<!> 一定要添加所用数据库的依赖,否则会报错而且不告诉你原因
runtime group: 'org.xerial', name: 'sqlite-jdbc', version: '3.25.2'
}
buildscript {
repositories {
mavenLocal()
mavenCentral()
}
dependencies {
//添加jooq依赖
classpath 'org.jooq:jooq-codegen:3.11.5'
//<!> 一定要添加所用数据库的依赖,否则会报错而且不告诉你原因
classpath group: 'org.xerial', name: 'sqlite-jdbc', version: '3.25.2'
}
}
// Use your favourite XML builder to construct the code generation configuration file
def writer = new StringWriter()
def xml = new groovy.xml.MarkupBuilder(writer)
.configuration('xmlns': 'http://www.jooq.org/xsd/jooq-codegen-3.11.0.xsd') {
jdbc() {
url('jdbc:sqlite:src/main/resources/database.db') // src/main/resources/database.db为数据库路径
//user() //不需要用户名,省略
//password() //不需要密码,省略
}
generator() {
database() {
includes('.*') //包括的数据表
excludes() //排除的数据表
inputSchema() //默认数据库
}
target() {
packageName('com.kenvix.pixiv.generated.jooq') //计划用于存储生成结果的包名
directory('src/main/java') //将生成结果储存于src/main/java
}
}
}
// Run the code generator
// ----------------------
org.jooq.codegen.GenerationTool.generate(writer.toString())
然后运行 gradlew buildEnvironment
看看jooq有没有什么警告,同时,你会发现代码生成好了。