欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

在Spring Data JPA中引入Querydsl的实现方式

程序员文章站 2022-07-05 08:01:10
一、环境说明基础框架采用spring boot、spring data jpa、hibernate。在动态查询中,有一种方式是采用querydsl的方式。二、具体配置1、在pom.xml中,引入相关包...

一、环境说明

基础框架采用spring boot、spring data jpa、hibernate。在动态查询中,有一种方式是采用querydsl的方式。

二、具体配置

1、在pom.xml中,引入相关包和配置插件。

(1)引入包(注:不需要版本号,spring boot 会自动匹配合适的版本)

(2)配置插件:主要用来生成“查询对象”。

2、设置源文件夹

经过上面pom.xml的配置后,就在 target/generated-sources 文件夹下面自动生成“查询对象”。需要将该文件夹设置成“源文件夹”,以便可以将下面的java文件进行编译使用。

生成的查询对象,都是在原实体(bo)类的名字前,加上 q 表示。

在Spring Data JPA中引入Querydsl的实现方式

3、dao中继承接口querydslpredicateexecutor

在Spring Data JPA中引入Querydsl的实现方式

4、在service层使用 querydsl方式进行是查询,例如:

在Spring Data JPA中引入Querydsl的实现方式

三、写在最后

此文仅作为引入querydsl的笔记,并不代表作者本人推荐使用querydsl。就实际应用而言,个人更倾向于使用 jpa criteria 的方式来实现动态查询,其接口是jpaspecificationexecutor。

补充:spring-data-jpa扩展查询 querydsl 实践

说明: querydsl是以函数连接的方式将sql调用进行拆分,比较spring data jpa中的criteria查询方法还是简洁了不少。

用例:通过服务调用,使用querydsl进行查询并直接返回dto对象(自定义传输对象(根据业务需求),注意区别于entity)

实践步骤:

1.创建user与depart表,使用外键进行关联,并插入一些模拟数据。

在Spring Data JPA中引入Querydsl的实现方式

2.创建sprintboot项目,在pom文件中加入以下依赖:

3.在pom文件中<build>--><plugins>节点下加入plugin:

4.生成相关entity与repository对象,这里以user为例:

注意:repository需要继承 querydslpredicateexecutor<t>接口。

5.生成业务传输对象dto:

注意:repository需要继承 querydslpredicateexecutor<t>接口。

5.生成业务传输对象dto:

6.创建controller进行测试:

注:这里就是使用querydsl进行查询,并直接转换需要的属性至dto。并且代码中的pre是可以根据参数动态拼接的。

7.测试结果:

在Spring Data JPA中引入Querydsl的实现方式

这是查询日志:

在Spring Data JPA中引入Querydsl的实现方式

完。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持。如有错误或未考虑完全的地方,望不吝赐教。