【JOOQ】Springboot集成JOOQ

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&amp;allowMultiQueries=true&amp;useSSL=false&amp;characterEncoding=utf8&amp;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);
    }

}

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章