结合Querydsljpa和querydslsql的java和代码生成
事情是这样的:
我一直在我的项目中使用
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>
现在,我还需要使用
querydsl-sql
,显然,我不能使用由com.querydsl.apt.jpa.JPAAnnotationProcessor
创建的Q
生成的类。以下是maven
中的插件:<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>
挑战
上面的第二个插件为我的DBMS(MySql)中的所有模式生成
Q
类,而我已经指定了从中生成Q
类的模式由于我不想在
git
存储库中存储敏感信息,如何从文件中指定用户名、密码和jdbcUrl
# 1 楼答案
以下是我的解决方案:
Q
类。所以问题一“解决了”李>尽管我仍然相信在插件中应该能够指定要生成的模式。有趣的是,{}正如@Rober Bain所建议的那样,也在{}文档中的
<schemaPattern></schemaPattern>
不起作用对于挑战二,首先需要创建一个属性文件,比如
dev.properties
,其中包含所需的内容jdbc-url=jdbc:mysql://localhost:3306/myschema?nullNamePatternMatchesAll=true
jdbc-user=my_user
jdbc-password=my_password
然后,包括以下属性maven插件
。。。在你的查询dsl插件中
查看此链接了解更多信息Read pom.xml configurations from properties file
# 2 楼答案
在
configuration
元素中使用schemaPattern
:“类似模式形式的模式名模式;必须与存储在数据库中的模式名匹配,可以用逗号(默认值:null)将多个模式与querydsl docs分隔虽然这并不能完全满足你的要求,但我相信这是解决这个问题的标准方法Use encrypted data in a Maven pom