代码之家  ›  专栏  ›  技术社区  ›  Kihats

结合querydsl jpa和querydsl sql和代码生成

  •  0
  • Kihats  · 技术社区  · 6 年前

    事情是这样的:

    1. 我一直在用 querydsl-jpa 在我的项目中,代码生成从来都不是问题。我用这个插件 maven :

         <plugin>
              <groupId>com.mysema.maven</groupId>
              <artifactId>maven-apt-plugin</artifactId>
              <version>1.0</version>
              <executions>
                  <execution>
                      <phase>generate-sources</phase>
                      <goals>
                          <goal>process</goal>
                      </goals>
                      <configuration>
                          <outputDirectory>${project.build.directory}/generated-sources</outputDirectory>
                          <processor>com.querydsl.apt.jpa.JPAAnnotationProcessor</processor>
                      </configuration>
                  </execution>
              </executions>
          </plugin>
      
    2. 现在,我还需要使用 querydsl-sql 显然,我不能用 Q -生成的类由创建 com.querydsl.apt.jpa.JPAAnnotationProcessor . 这是插件 马文 :

          <plugin>
              <groupId>com.querydsl</groupId>
              <artifactId>querydsl-maven-plugin</artifactId>
              <version>4.2.1</version>
              <executions>
                  <execution>
                      <goals>
                          <goal>export</goal>
                      </goals>
                  </execution>
              </executions>
              <configuration>
                                      <jdbcDriver>com.mysql.cj.jdbc.Driver</jdbcDriver>
                  <jdbcUrl>jdbc:mysql://localhost:3306/mydatabase</jdbcUrl>
                  <jdbcUser>root</jdbcUser>
                  <jdbcPassword></jdbcPassword>                    
                  <packageName>com.myproject.domain</packageName>
                  <targetFolder>${project.basedir}/target/generated-sources/java</targetFolder>
              </configuration>
              <dependencies>
                  <dependency>
                      <groupId>mysql</groupId>
                      <artifactId>mysql-connector-java</artifactId>
                      <version>8.0.13</version>
                  </dependency>
              </dependencies>
          </plugin>
      

    挑战

    1. 上面的第二个插件生成 Q -为我的DBMS(MySQL)中的所有架构类,而我已经指定了要生成的架构 Q 类。

    2. 如何从文件中指定用户名、密码和jdbcurl,因为我不希望将敏感信息存储在 git 储存库。

    2 回复  |  直到 6 年前
        1
  •  0
  •   Robert Bain    6 年前
    1. 使用 schemaPattern configuration 元素:“类似模式形式的模式名模式;必须与存储在数据库中的模式名匹配,多个模式可以用逗号(默认值:空)”与 querydsl docs .

    2. 虽然这并不能完全满足你的要求,但我相信这是解决这个问题的标准方法。 Use encrypted data in a Maven pom .

        2
  •  0
  •   Kihats    6 年前

    以下是我的解决方案:

    1. 对于挑战一,我本身没有找到解决方案,只是找到了一些解决方法。我在我的DBMS(MySQL)中创建了一个用户,该用户对我感兴趣的单一模式具有特权。这样,用户就无法生成 Q -其他架构的类。所以问题一“解决了”。

    尽管我仍然相信在插件中,应该能够指定要生成的模式。有趣的是 <schemaPattern></schemaPattern> 如@rober bain所建议的,也在 querydsl-sql 文档不起作用。

    1. 对于第二个挑战,首先你需要创建一个属性文件,比如 dev.properties 有必要的内容

      jdbc-url=jdbc:mysql://localhost:3306/myschema?nullNamePatternMatchesAll=true

      jdbc-user=my_user

      jdbc-password=my_password

      然后,包括以下内容 属性Maven插件

         <plugin>
              <groupId>org.codehaus.mojo</groupId>
              <artifactId>properties-maven-plugin</artifactId>
              <version>1.0-alpha-2</version>
              <executions>
                  <execution>
                      <phase>initialize</phase>
                      <goals>
                          <goal>read-project-properties</goal>
                      </goals>
                      <configuration>
                          <files>
                              <file>dev.properties</file> // Reference to properties file
                          </files>
                      </configuration>
                  </execution>
              </executions>
          </plugin>   
      

      …在你的查询DSL插件中…

          <plugin>
              <groupId>com.querydsl</groupId>
              <artifactId>querydsl-maven-plugin</artifactId>
              <version>4.2.1</version>
              <executions>
                  <execution>
                      <goals>
                          <goal>export</goal>
                      </goals>
                  </execution>
              </executions>
              <configuration>
                  <jdbcDriver>com.mysql.jdbc.Driver</jdbcDriver>
                  <jdbcUrl>${jdbc-url}</jdbcUrl>
                  <jdbcUser>${jdbc-user}</jdbcUser>
                  <jdbcPassword>${jdbc-password}</jdbcPassword>
                  <packageName>com.myproject.domain</packageName>
                  <targetFolder>${project.basedir}/target/generated-sources/java</targetFolder>
              </configuration>
              <dependencies>
                  <dependency>
                      <groupId>mysql</groupId>
                      <artifactId>mysql-connector-java</artifactId>
                      <version>6.0.6</version>
                  </dependency>
              </dependencies>
          </plugin> 
      

    查看此链接了解更多信息 Read pom.xml configurations from properties file