前言
Spring JPA
是目前比较常用的ORM
解决方案,但是其对于某些场景并不是特别的方便,例如查询部分字段,联表查询,子查询等。
而接下来我会介绍与JPA
形成互补,同时也是与JPA
兼容得很好的框架QueryDSL
。
同时由于目前主流使用Spring Boot
,所以本文也会基于Spring Boot
来进行演示
如果对于长文无感,但是又希望了解QueryDSL
可以直接查看文章最后的总结
环境信息
以下为示例的关键环境信息
JDK 1.8
maven 3.6.1
SpringBoot 2.2.0.RELEASE
IntelliJ IDEA 2019.2.3
lombok
mysql-5.7
源码地址
https://github.com/spring-based-solutions/querydsl-jpa-demo
项目整合
pom文件配置
QueryDSL
本身定位就是对某些技术的补充或者说是完善,其提供了对JPA
、JDBC
、JDO
等技术的支持。这里引入的是QueryDSL-JPA
,需要注意一定要引入querydsl代码生成器插件。
<properties>
<java.version>1.8</java.version>
<querydsl.version>4.2.1</querydsl.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<!--使用版本较老的mysql驱动包,用于连接mysql-5.7-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.48</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
<!--引入querydsl-jpa依赖-->
<dependency>
<groupId>com.querydsl</groupId>
<artifactId>querydsl-jpa</artifactId>
<version>${quer