jooq插件环境搭建及使用

jooq环境搭建及部署:
1,导入相应jar包并指定生成dao、实体类等的路径及自定义的生成策略
<build>
    <plugins>
      <plugin>
        <groupId>org.jooq</groupId>
        <artifactId>jooq-codegen-maven</artifactId>
        <version>3.8.4</version>
        <executions>
          <execution>
            <phase>none</phase>
            <goals>
              <goal>generate</goal>
            </goals>
          </execution>
        </executions>
        <dependencies>
          <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.39</version>
          </dependency>
        </dependencies>
        <!-- Specify the plugin configuration.
        The configuration format is the same as for the standalone code generator -->
        <configuration>
          <!-- JDBC connection parameters
          <jdbc>
              <driver>com.mysql.jdbc.Driver</driver>
              <url>jdbc:mysql://rm-bp1192yxk9be81ze5o.mysql.rds.aliyuncs.com:3306/athena</url>
              <user>athenadvlpdbuser</user>
              <password>q4UEL5z3CMLaQvZs0omUn3fVpU7IFN</password>
          </jdbc>
          -->
          <!---->
          <jdbc>
            <driver>com.mysql.jdbc.Driver</driver>
            <url>jdbc:mysql://rm-bp174wmoh9b40f5h4.mysql.rds.aliyuncs.com:3306</url>
            <user>zeustestdbuser</user>
            <password>oSD7mVrAknYYSL5bT4ouP11lyc54f9</password>
          </jdbc>
          <!--<jdbc>-->
          <!--<driver>com.mysql.jdbc.Driver</driver>-->
          <!--<url>jdbc:mysql://localhost:3306/zeus?useSSL=false</url>-->
          <!--<user>root</user>-->
          <!--<password>456132</password>-->
          <!--</jdbc>-->
          <!--<jdbc>-->
          <!--<driver>com.mysql.jdbc.Driver</driver>-->
          <!--<url>jdbc:mysql://rm-bp174wmoh9b40f5h4.mysql.rds.aliyuncs.com:3306/imsc</url>-->
          <!--<user>imsctestdbuser</user>-->
          <!--<password>bJu86wZykB5eTCUI</password>-->
          <!--</jdbc>-->
          <!-- Generator parameters -->
          <generator>
            <database>
              <name>org.jooq.util.mysql.MySQLDatabase</name>
              <!--自定生成的表名,多个表用"|"隔开-->
              <!--<includes>(t_hera_[a-z,A-Z,_]{1,25}|tisbs[a-z,A-Z,_,0-9]{1,25}|tis[a-z,A-Z,_,0-9]{1,25}| company_[a-z,A-Z,_,0-9]{1,25})| accoun[a-z,A-Z,_]{1,25}| use[a-z,A-Z,_]{1,25}|tenant </includes>-->
              <includes>account</includes>
              <excludes></excludes>
              <!--指定库名-->
              <schemata>
                <schema>
                  <inputSchema>zeus</inputSchema>
                </schema>
                <schema>
                  <inputSchema>imsc</inputSchema>
                </schema>
              </schemata> <!--数据库名-->
              <!--<customTypes>-->
              <!--<customType>-->
              <!--<name>EncryptedString</name>-->
              <!--<type>java.lang.String</type>-->
              <!--<binding>com.xforceplus.imsc.converter.EncryptedStringConverter</binding>-->
              <!--</customType>-->
              <!--</customTypes>-->
              <!--<forcedTypes>-->
              <!--<forcedType>-->
              <!--<name>EncryptedString</name>-->
              <!--<expression>.*\.jkll05\.company_code</expression>-->
              <!--<types>varchar</types>-->
              <!--</forcedType>-->
              <!--</forcedTypes>-->
            </database>
            <generate>
              <pojos>true</pojos>
              <daos>true</daos>
              <!--<fluentSetters>true</fluentSetters>-->
              <pojosEqualsAndHashCode>true</pojosEqualsAndHashCode>
              <springAnnotations>true</springAnnotations>
            </generate>
            <!--指定生成的目标文件地址,默认会生成"库名文件夹"、DefaultCatalog日志类、表文件夹、库名文件类、daos、pojos、records-->
            <target>
              <packageName>com.xforceplus.hera.domain.jooq</packageName>
              <directory>src/main/java</directory>
            </target>
            <target>
              <packageName>com.xforceplus.hera.domain.dto</packageName>
              <directory>src/main/java</directory>
            </target>
            <!--指定自定义的生成策略-->
            <strategy>
              <name>com.xforceplus.hera.generate.ExtendGeneratorStrategy</name>
            </strategy>
          </generator>
        </configuration>
      </plugin>
      <!--<plugin>-->
      <!--<groupId>org.springframework.boot</groupId>-->
      <!--<artifactId>spring-boot-maven-plugin</artifactId>-->
      <!--</plugin>-->
    </plugins>
  </build>
2,自定义生成策略:
    package com.xforceplus.hera.generate;
    import org.jooq.tools.StringUtils;
    import org.jooq.util.DefaultGeneratorStrategy;
    import org.jooq.util.Definition;
    public class ExtendGeneratorStrategy extends DefaultGeneratorStrategy{
       public static final String PREFIX_UPPER= "T_HERA_";
       public static final String PREFIX_LOWER= "t_hera_";
        public String getJavaClassName(Definition definition, Mode mode) {
            String sourceName = definition.getOutputName();
          sourceName = sourceName.replace(' ', '_').replace('-', '_').replace('.', '_');
          sourceName = sourceName.replace(PREFIX_UPPER, "").replace(PREFIX_LOWER, "");
          if (sourceName.startsWith("t_") || sourceName.startsWith("T_")) {
             sourceName = sourceName.substring(2);
          }
           sourceName = StringUtils.toCamelCase(sourceName);
           if (mode == Mode.POJO) {
               sourceName = sourceName + "Obj";
           }
            if (mode == Mode.RECORD) {
               sourceName = sourceName + "Record";
            }
            else if (mode == Mode.DAO) {
               sourceName = sourceName + "Dao";
            }
            else if (mode == Mode.INTERFACE) {
               sourceName = "I" + sourceName;
            }
           return sourceName;
        }
    }




猜你喜欢

转载自blog.csdn.net/qq_35255384/article/details/80418034