jOOQ系列教程
主要是针对查询出来的结果进行处理, 以及响应
Record 相当于模型, 可以对其修改和删除; 其 .from() 和 .into() 方法实现对 Record 的填充和转换(通常是使用pojos实体类进行转换然后响应).
安装(与spring boot集成)
<!-- jooq -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.29</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jooq</artifactId>
</dependency>
<!-- 代码生成器插件 mvn jooq-codegen:generate -->
<plugin>
<groupId>org.jooq</groupId>
<artifactId>jooq-codegen-maven</artifactId>
<version>${jooq.version}</version>
<configuration>
<jdbc>
<driver>com.mysql.cj.jdbc.Driver</driver>
<url>jdbc:mysql://127.0.0.1:3306/exadmin</url>
<user>root</user>
<password>root</password>
</jdbc>
<generator>
<database>
<!-- 包含的数据库和表 -->
<includes>exadmin.*</includes>
</database>
<target>
<!-- 指定包名和位置 -->
<!-- 主包+子包 -->
<packageName>com.example.blog.jooqgen</packageName>
<!-- 主包目录即可 -->
<directory>./src/main/kotlin/</directory>
</target>
<generate>
<!-- 生成pojo文件,修改自行继承 -->
<pojos>true</pojos>
<!-- 生成dao文件 -->
<daos>true</daos>
</generate>
</generator>
</configuration>
</plugin>
配置
spring:
datasource:
url: jdbc:mysql://127.0.0.1:3306/exadmin
username: root
password: root
logging:
level:
org.jooq.tools.LoggerListener: DEBUG
使用(kotlin)
package com.example.blog
import org.springframework.web.bind.annotation.RequestMapping
import org.springframework.web.bind.annotation.RestController
import org.jooq.DSLContext;
import org.springframework.beans.factory.annotation.Autowired;
import org.jooq.Record;
import com.jooqgen.exadmin.Tables.*;
import org.jooq.Record1
import org.jooq.Result
import org.jooq.impl.DSL
@RestController
class HtmlController {
@Autowired
private val dslContext: DSLContext? = null;
@RequestMapping("/")
fun blog(): Array<Int> {
var list = emptyArray<Int>();
dslContext?.select(ADMIN_CONFIGS.ID)?.from(ADMIN_CONFIGS)
?.join(AGENT_DATA)
?.on(ADMIN_CONFIGS.ID.eq(AGENT_DATA.ID))
?.where(AGENT_DATA.ID.eq(2))
?.fetch()?.forEach() { record ->
run {
list += record.getValue(AGENT_DATA.ID);
}
};
return list;
}
}
Note
也可以使用Dao层直接返回pojos, Dao层分装了部分 fetchBy[] 方法
var dao: AdminConfigsDao? = AdminConfigsDao(dslContext?.configuration());
return dao?.fetchById(1);
mvn jooq-codegen:generate 配置
# 配置 不生成无符号的pojos: https://www.jooq.org/doc/latest/manual/code-generation/
# 配置 生成kt代码: https://www.jooq.org/doc/latest/manual/code-generation/kotlingenerator/