文章目錄
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);
}
}