文章目录
1、JOOQ基本介绍
Jooq类似于SpringJPA,可以使java开发人员告别SQL,以书写java的方式来完成对数据库的操作。
官方地址为:JOOQ
2、集成JOOQ
1、创建测试数据库
CREATE TABLE `student` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`username` varchar(255) DEFAULT NULL,
`password` varchar(255) DEFAULT NULL,
`gender` enum('0','1') CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
2、构建maven项目
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>project-parent</artifactId>
<groupId>project-parent</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>springboot-jooq</artifactId>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<!--springboot-相关-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
</dependency>
<!--jooq starter:导入JOOQ框架-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jooq</artifactId>
</dependency>
<!--jooq 代码映射插件-->
<dependency>
<groupId>org.jooq</groupId>
<artifactId>jooq-codegen</artifactId>
</dependency>
<dependency>
<groupId>org.jooq</groupId>
<artifactId>jooq-meta</artifactId>
</dependency>
<!--mysql驱动-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<!--配置JOOQ-->
<plugin>
<groupId>org.jooq</groupId>
<artifactId>jooq-codegen-maven</artifactId>
<version>3.13.2</version>
<!--配置文件存放地址-->
<configuration>
<configurationFile>src/main/resources/jooq/jooq-codegen-config.xml</configurationFile>
</configuration>
</plugin>
</plugins>
</build>
</project>
3、书写JOOQ配置文件jooq-codegen-config.xml
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<configuration>
<jdbc>
<driver>com.mysql.cj.jdbc.Driver</driver>
<url>jdbc:mysql://127.0.0.1:3306/jooq?useUnicode=true&allowMultiQueries=true&useSSL=false&characterEncoding=utf8&serverTimezone=UTC</url>
<user>root</user>
<password>root</password>
</jdbc>
<generator>
<database>
<!--代码生成器-->
<name>org.jooq.meta.mysql.MySQLDatabase</name>
<!--数据库中的哪个库-->
<schemata>
<schema>
<inputSchema>jooq</inputSchema>
</schema>
</schemata>
<!--数据库中需要生成的表-->
<includes>student</includes>
<!--数据库中要排除的表-->
<excludes></excludes>
<forcedTypes></forcedTypes>
<outputSchemaToDefault>true</outputSchemaToDefault>
</database>
<generate>
<!--是否生成dao和pojo-->
<daos>false</daos>
<pojos>true</pojos>
<!--是否把数据库时间类型映射到java 8时间类型-->
<javaTimeTypes>true</javaTimeTypes>
<!--<interfaces>true</interfaces>-->
<!--是否在生成的代码中添加spring注释,比如@Repository-->
<springAnnotations>false</springAnnotations>
</generate>
<!--文件生成位置-->
<target>
<packageName>cn.repository.jooq</packageName>
<directory>src/main/java</directory>
</target>
</generator>
</configuration>
4、运行插件,生成表对应的record
5、运行结果
6、测试插入一条数据
@SpringBootTest
@RunWith(SpringRunner.class)
public class JooqTest {
@Autowired
private DSLContext create;
@Test
public void insertTest() {
StudentRecord studentRecord = new StudentRecord();
studentRecord.setUsername("隐市高手");
studentRecord.setPassword("123456");
studentRecord.setGender("1");
int effectRow = create.executeInsert(studentRecord);
System.out.println("插入行数:" + effectRow);
}
}