本博客在SpringBoot,maven,Mysql的环境下进行配置编写。

 

一、环境配置

1.引入maven依赖以及插件,以下是本demo的依赖(绿色字体部分是需要注意添加的依赖以及插件):

插件:

这里说明一下 添加的apt-maven-plugin 插件是为了让程序自动生成query type(查询实体,命名方式为:"Q"+对应实体名)

上面引入的querydsl-apt依赖就是为了这个插件服务的;

注意点:在使用过程中如果遇到query type无法自动生成的情况,用maven更新一下项目即可解决。右键项目-》Maven-》Update Project,在这之后会生成Q类;这里要注意的是只有在达成jar包或者war包的时候才能自动生成,打成pom包是无效的。

QueryDSL默认使用HQL发出查询语句。但也支持原生SQL查询,若要使用原生SQL查询,需要使用下面这个maven插件生成相应的query type。具体的可以去查看其它博客,这里不作讲解。

 

二、使用

在Spring下,QueryDSL的使用有两种风格,一种是使用JPAQueryFactory的原生QueryDSL风格,另一种是基于Spring Data提供的queryDslpredicateExecutor<T>的Spring-data风格。

使用QueryDslPredicateExecutor<T>可以简化一些代码,使得查询更加优雅。
JPAQueryFactory的优势则体现在其功能的强大,支持更复杂的查询业务。甚至可以用来进行更新和删除操作。

下面讲解常用的JPAQueryFactory的方式. QueryDslPredicateExecutor 可以在其他博客中学习.

1、JPAQueryFactory 

JPAQueryFactory使用逻辑类似于HQL/SQL语法,不再多加说明
QueryDSL在支持JPA的同时,也提供了对Hibernate的支持。可以通过HibernateQueryFactory来使用。

装配:这里在开发中我们通常写在BaseService中:

注意 我们写业务的Service都要继承BaseService方可正常使用QueryDSL

1.1、 添加:

1.2、 更新

1.3、删除 

1.4、查询

单表

 

到这里我们已经掌握了queryDsl的基本使用,至于JPA的使用我会单独出一遍博客,那我们可以看得出到现在我们并没有去写sql,那至于queryDsl的优点仅仅就是让我们少写sql吗,下面我们就讲解queryDsl实现复杂条件的查询(仅以查询作为demo,删除 修改一个道理);

对于复杂条件的查询是我们处理业务中最重要也是最头痛的事,使用queryDSL能够很大程度的减轻我们code的量:

demo:查询水果信息以及对应的分类具体信息:

那么当条件有很多的时候我们怎么办呢?

我们可以在where()中是用 条件.and(条件).and()...的方式,但我们通常会使用一个BooleanExpression 对象:

 

那么还有一个很重要也很麻烦的问题 就是如果需要分页的时候我们怎么处理呢?其实在queryDSL呢 分页也帮我们做好了,我们只需要设置参数即可,话不多说,看下图:

到这里呢QueryDsl的日常使用已经完毕了,更高级的用法,我会在下一篇博客中写出,此篇已经足够日常开发使用了.

第一次使用生成Q类那里可能会采坑,要好好处理额,加油,我们一起coding,我是超哥 谢谢.

Logo

更多推荐