一、環境說明
基礎框架采用Spring Boot、Spring Data JPA、Hibernate。在動態查詢中,有一種方式是采用Querydsl的方式。
二、具體配置
1、在pom.xml中,引入相關包和配置插件。
(1)引入包(注:不需要版本號,Spring Boot 會自動匹配合適的版本)
<!-- Querydsl相關包 -->
<dependency>
<groupId>com.querydsl</groupId>
<artifactId>querydsl-jpa</artifactId>
</dependency>
<dependency>
<groupId>com.querydsl</groupId>
<artifactId>querydsl-apt</artifactId>
</dependency>
(2)配置插件:主要用來生成“查詢對象”。
<plugin>
<groupId>com.mysema.maven</groupId>
<artifactId>maven-apt-plugin</artifactId>
<version>1.0.4</version>
<executions>
<execution>
<phase>generate-sources</phase>
<goals>
<goal>process</goal>
</goals>
<configuration>
<outputDirectory>target/generated-sources</outputDirectory>
<processor>com.querydsl.apt.jpa.JPAAnnotationProcessor</processor>
</configuration>
</execution>
</executions>
</plugin>
2、設置源文件夾
經過上面pom.xml的配置后,就在 target/generated-sources 文件夾下面自動生成“查詢對象”。需要將該文件夾設置成“源文件夾”,以便可以將下面的java文件進行編譯使用。
生成的查詢對象,都是在原實體(bo)類的名字前,加上 Q 表示。
3、dao中繼承接口QueryDslPredicateExecutor
4、在service層使用 Querydsl方式進行是查詢,例如:
三、寫在最后
此文僅作為引入Querydsl的筆記,並不代表作者本人推薦使用Querydsl。就實際應用而言,個人更傾向於使用 JPA Criteria 的方式來實現動態查詢,其接口是JpaSpecificationExecutor。