jooq自动生成pojo

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_36898043/article/details/79421743

最近使用了jooq,,jooq确实很少用。。不过真的很少用,,mybatis可以自动生成dao层,,jooq可以生成tables等,如图:

可以直接操作这些来操作数据库。

下面码出步骤:

1、项目结构:


如图,MyStrategy类是策略类,里面可以写自定义的生成策略,,db包下即我们要指定的生成jooq的地方

2、添加pom文件

<?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">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.yufeng</groupId>
    <artifactId>jooq-maven</artifactId>
    <version>1.0-SNAPSHOT</version>

    <packaging>pom</packaging>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <mysql-jdbc-driver>5.1.34</mysql-jdbc-driver>
        <!--<mysql-jdbc-driver>5.1.39</mysql-jdbc-driver>-->
        <vapor-version>1.0.5-SNAPSHOT</vapor-version>
        <!--<jooq-version>3.10.0</jooq-version>-->
        <jooq-version>3.7.0</jooq-version>
        <javax-validation-version>1.1.0.Final</javax-validation-version>
        <spring-boot-version>1.5.6.RELEASE</spring-boot-version>
    </properties>
    <!--依赖包声明 实际没有导入-->
    <!--<dependencyManagement>-->
    <dependencies>

        <!--Spring Boot start-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jooq</artifactId>
            <version>${spring-boot-version}</version>
        </dependency>
        <!--Spring Boot end-->

        <!--JOOQ start-->
        <dependency>
            <groupId>org.jooq</groupId>
            <artifactId>jooq</artifactId>
            <version>${jooq-version}</version>
        </dependency>
        <dependency>
            <groupId>org.jooq</groupId>
            <artifactId>jooq-meta</artifactId>
            <version>${jooq-version}</version>
        </dependency>
        <dependency>
            <groupId>org.jooq</groupId>
            <artifactId>jooq-codegen</artifactId>
            <version>${jooq-version}</version>
        </dependency>
        <!--JOOQ end-->

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>${mysql-jdbc-driver}</version>
        </dependency>

        <dependency>
            <groupId>javax.validation</groupId>
            <artifactId>validation-api</artifactId>
            <version>${javax-validation-version}</version>
        </dependency>
    </dependencies>

    <!--</dependencyManagement>-->

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.jooq</groupId>
                <artifactId>jooq-codegen-maven</artifactId>
                <version>${jooq-version}</version>
                <executions>
                    <execution>
                        <id>generate-mysql</id>
                        <phase>generate-sources</phase>
                        <goals>
                            <goal>generate</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <!-- jdbc配置 -->
                    <jdbc>
                        <driver>com.mysql.jdbc.Driver</driver>
                        <!-- 这里写你自己数据库的连接和数据库名 -->
                        <!--<url>jdbc:mysql://127.0.0.1:3306/数据库名</url>-->
                        <!-- 这里写你自己数据库的用户名 -->
                        <user>username</user>
                        <!-- 这里写你自己数据库的密码 -->
                        <password>password</password>
                    </jdbc>
                    <!-- 代码生成配置 -->
                    <generator>
                        <name>org.jooq.util.JavaGenerator</name>
                        <strategy>
                            <name>ele.me.lizijian.strategy.MyStrategy</name>
                        </strategy>
                        <database>
                            <name>org.jooq.util.mysql.MySQLDatabase</name>
                            <excludes>QRTZ_.*|jooq-maven\..*\.is_delete</excludes>
                            <includeExcludeColumns>true</includeExcludeColumns>
                            <inputSchema>atfcapi</inputSchema>
                        </database>
                        <generate>
                            <deprecated>false</deprecated>
                            <daos>true</daos>
                            <interfaces>true</interfaces>
                            <validationAnnotations>true</validationAnnotations>
                        </generate>
                        <target>
                            <packageName>ele.me.atfcapi.tools.db</packageName>
                            <directory>src/main/java</directory>
                        </target>
                    </generator>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

3、完善自定义策略类:指定生成pojo的规则

  1. @Configuration  
  2. public class MyStrategy extends DefaultGeneratorStrategy {  
  3.     private String tablePrefix = "tb_";  
  4.   
  5.     public String getTablePrefix() {  
  6.         return tablePrefix;  
  7.     }  
  8.   
  9.     public void setTablePrefix(String tablePrefix) {  
  10.         this.tablePrefix = tablePrefix;  
  11.     }  
  12.   
  13.     @Override  
  14.     public String getJavaClassName(Definition definition, Mode mode) {  
  15.         StringBuilder result = new StringBuilder();  
  16.   
  17.         String outputName = definition.getOutputName();  
  18.         if (!StringUtils.isBlank(tablePrefix) && outputName.startsWith(tablePrefix)) {  
  19.             outputName = outputName.substring(tablePrefix.length());  
  20.         }  
  21.         result.append(StringUtils.toCamelCase(outputName));  
  22.   
  23.         if (mode == Mode.RECORD) {  
  24.             result.append("Record");  
  25.         } else if (mode == Mode.DAO) {  
  26.             result.append("Dao");  
  27.         } else if (mode == Mode.INTERFACE) {  
  28.             result.insert(0"I");  
  29.         }  
  30.         return result.toString();  
  31.     }  
  32. }  

4、生成

准备工作已经完成了,接下来生成代码:别用mvn clean install
1、rebuild project,为.java文件生成相应的.class文件

2、在命令行里输入mvn install

代码生成完毕。。。。

猜你喜欢

转载自blog.csdn.net/qq_36898043/article/details/79421743