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;
        }
    }




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