首页
学习
活动
专区
圈层
工具
发布

第二章:使用QueryDSL与SpringDataJPA实现单表普通条件查询

创建基类JPA 这里我们简单的封装下JPA,我们添加一个接口去继承我们需要的JPA接口并让所有子类继承我们的基类接口就可以了,基类JPA代码如下所示: package com.yuqiyu.querydsl.sample.chapter2...自动生成Q结构查询实体 我们之前说过了QueryDSL很神奇的地方就在于它是一个可通过Maven插件自动生成实体类型的结构查询实体,那么我们接下来使用maven compile命令来让我们配置的JPAAnnotationProcessor...命令执行完成后我们可以看到target目录自动生成了并且为我们创建了一些目录,展开目录后可以看到QueryDSL为我们自动生成的查询实体,如下图2所示: ?...图2 maven插件会为我们自动创建一堆目录,我们的查询实体的位置是以我们pom.xml配置文件内配置的目录为准。...也是完全按照我们指定的模糊查询字段生成的,到目前可以看到QueryDSL为我们减少了太多了查询繁琐的事情,让我们能够更好的投入到业务逻辑处理中。

2K20

第七章:使用QueryDSL与SpringDataJPA实现子查询

在上一章我们讲到了QueryDSL的聚合函数,让我们重新认识了QueryDSL的便利之处,它可以很好的使用原生SQL的思想来进行Java形式的描述,编写完成也不需要考虑更换数据库存在的不兼容问题。...当然QueryDSL还有很多我们没有发掘出来的核心技术,我们今天来讲解下”子查询“,看看QueryDSL是怎么完美的诠释了使用Java写SQL。..."方法来实现子查询,子查询是查询的商品类型表内的信息并且类型的名称包含“蔬菜”,不过子查询仅仅返回了商品类型的编号。..."1",对应数据库的类型是”绿色蔬菜“,这证明了我们的编码跟返回的数据是一致的,那么接下来我们来看下QueryDSL为我们自动生成的SQL,如下所示: Hibernate: select...总结 以上内容就是本章的全部内容,我们使用三个简单的例子来讲述了QueryDSL子查询,QueryDSL完美的将原生的SQL编写方式转移到了Java程序内,内置了几乎所有的原生SQL的函数、关键字、语法等

5.7K12
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    第五章:使用QueryDSL与SpringDataJPA实现查询返回自定义对象

    @Entity标识该实体被SpringDataJPA所管理,@Table标识该实体对应的数据库内的表信息,@Data该注解则是lombok内的合并注解,根据idea工具的插件自动添加getter/setter...,并不对应数据库内的表,所以这里不需要配置@Entity、@Table等JPA注解,仅把@Data注解配置上就可以了,接下来我们编译下项目让QueryDSL插件自动生成查询实体。...图1 我们双击compile命令执行,执行完成后会在我们pom.xml配置文件内配置生成目录内生成对应实体的QueryDSL查询实体。生成的查询实体如下图2所示: ?...图2 QueryDSL配置JPA插件仅会根据@Entity进行生成查询实体 创建控制器 我们来创建一个测试的控制器读取商品表内的所有商品,在编写具体的查询方法之前我们需要实例化EntityManager...,当然你们也能猜到自动生成的SQL也是一样的,这里SQL就不做多解释了。

    5.3K40

    第四章:使用QueryDSL与SpringDataJPA实现多表关联查询

    构建QueryDSL查询实体 下面我们使用maven compile命令来自动生成QueryDSL的查询实体,我们在执行命令的时候会自动去pom.xml配置文件内查找JPAAnnotationProcessor...插件,如果你的实体配置了@Entity注解,那么就会自动生成查询实体并将生成的实体放置到target/generated-sources/java内。...图2 如上图2所示,QueryDSL在生成时会完全根据实体的包来对应创建。...order by goodinfobe0_.tg_order desc QueryDSL自动生成的SQL采用了Cross Join 获取两张表的《笛卡尔集》然后根据select内配置的实体进行返回字段...总结 本章的内容比较简单,我们使用QueryDSL完成了两个实体关联查询并返回单实体实例的方法,QueryDSL内也有LeftJoin、InnerJoin等关联查询不过都是基于具体实体类型来完成的,本章就不做解释了

    3.7K30

    第一章:Maven环境下如何配置QueryDSL环境

    QueryDSL是一个通用的查询框架,框架的核心原则是创建安全类型的查询,开始QueryDSL仅支持Hibernate(HQL),在不断开源人士加入QueryDSL团队后,陆续发布了针对JPA,JDO...scope>provided 这里我们仅引入QueryDSL的JPA与APT相关的依赖就可以使用了。...由于QueryDSL框架需要使用插件为我们配置了@Entity注解的实体自动对应创建QBean来作为查询时的条件以及自动生成QPath,下面我们需要修改pom.xml配置文件添加QueryDSL插件,如下代码块所示...而下面的插件就是我们添加的相关QueryDSL的插件,该插件会自动扫描项目内配置了@Entity的实体类,并根据实体的内定义的字段以及关联类通过JPAAnnotationProcessor自动创建Q[实体类名称...总结 至此我们本章的内容已经讲解完毕了,本章主要内容是我们在SpringBoot架构下如何配置QueryDSL的Maven环境,本系列项目是相当于SpringBoot系列文章的延伸,后期的文章讲解也是全部建立在

    1.9K30

    springboot2.X 使用spring-data组件对MongoDB做CURD

    -v /docker/mongo/data/db:/data/db\ mongo:latest --storageEngine wiredTiger 3.创建Mongo的实体类...扩展复杂查询 (基于单表的复杂查询,多表复杂查询暂时不纳入讨论范围) 如果按照以上的用法,动态扩展多条件查询仍然不能够完美支持,会导致代码冗余,当然你如果使用mongoTemlate进行自己封装,...那么为了实现动态扩展多条件查询,我去查看对应版本的官方文档,跳转点这里,看到可以集成querydsl作为扩展....步骤 整合querydsl 使用dsl 1.整合querydsl 1.Querydsl官网 2.querydsl集成文档 pom.xml配置引入依赖 <!...补充 BooleanBuilder的类图, 可以通过idea查看,因为findAll是通过父类继承下来的接口, 里面的Predicate也是一个接口,而BooleanExpression和BooleanBuilder

    2.4K31

    springJPA 之 QueryDSL(一)

    这些都无法直观的获得,还需我们手动将 Object[] 映射到我们需要的 Model 类里面去,这种使用体验无疑是极其糟糕的。...3.2 添加 Maven 插件 添加这个插件是为了让程序自动生成 query type (查询实体,命名方式为:”Q”+对应实体名)。...注:在使用过程中,如果遇到 query type 无法自动生成的情况,用maven更新一下项目即可解决(右键项目 -> Maven -> Update Folders)。...已经内置了一些常用的 Mysql 的聚合函数,如果遇到 QueryDSL 没有提供的聚合函数也无需慌张, QueryDSL 为我们提供了 Expressions 这个类,我们可以使用这个类手动拼接一个就好...,上手简单易操作,而又无需写 SQL ,实际上我们操作的还是对象类。

    6K40

    第六章:使用QueryDSL的聚合函数

    图1 查看控制台输出Build Success表示项目构建完成,我们就可以在target/generated-sources/java目录下看到自动生成的查询实体源码。...图2 我们再来看下控制台输出的生成SQL是否为我们预期的效果,SQL如下所示: Hibernate: select count(userbean0_.u_id) as col_...0_0_ from users userbean0_ 可以看到QueryDSL自动生成的SQL跟我们预期的是一样的,我又被QueryDSL的方便深深的折服了。...图3 我们再来查看下控制台输出的生成SQL,如下所示: Hibernate: select sum(userbean0_.u_score) as col_0_0_...总结 以上内容就是本章的全部讲解,我们不管是从上面的代码还是之前章节的代码可以得到一个QueryDSL的设计主导方向,QueryDSL完全遵循SQL标准进行设计,SQL内的作用域的关键字在QueryDSL

    3.9K21

    第三十章:SpringBoot使用MapStruct自动映射DTO

    MapStruct是一种类型安全的bean映射类生成java注释处理器。 我们要做的就是定义一个映射器接口,声明任何必需的映射方法。在编译的过程中,MapStruct会生成此接口的实现。...该实现使用纯java方法调用的源和目标对象之间的映射,MapStruct节省了时间,通过生成代码完成繁琐和容易出错的代码逻辑。...两张表有相应的关联,我们在不采用连接查询的方式模拟使用MapStruct,表信息如下所示: --商品类型信息表 CREATE TABLE `good_types` ( `tgt_id` int(11...,当然也可以是一个抽象类,如果你需要在转换的时候才用个性化的定制的时候可以采用抽象类的方式,相应的代码配置官方文档已经声明。...我们采用了Spring方式获取Mapper,在自动生成的实现类上MapStruct为我们自动添加了@ComponentSpring声明式注入注解配置。

    5.9K81

    第十四章:QueryDSL与SpringDataJPA共同服务于SpringBoot

    图1 配置SpringDataJPA 本章就不做详细的介绍SpringDataJPA了,请复制第十三章:SpringBoot实战SpringDataJPA(源码地址:git.oschina.net/jnyqy...图5 上面我们导入的querydsl的maven依赖,下面的插件很重要,当我们执行maven compile命令的时候,queryDSL这个插件会自动在我们配置的目录下生成Qxxx结构化查询实体对象,querydsl...生成Query查询对象 我们上面导入工作已经做完,接下来我们需要让maven执行querydsl的插件自动生成查询实体对象,我们需要先配置项目的maven命令,添加一条compile,点击:Run ->...图12 目录内有两个querydsl插件自动生成的实体,命名规则就是原实体名称前+Q前缀。可以查看类内的代码,都是由querydsl插件自动构建的。...Inquirer 自定义查询实体类,该类可以完成查询添加封装,查询结果处理操作,具体代码如下图18、19所示: ? 图18 ?

    2.2K40

    深入理解 QueryDSL 的 BooleanBuilder:构建复杂逻辑表达式

    深入理解 QueryDSL 的 BooleanBuilder:构建复杂逻辑表达式 在 Java 的查询构建库 QueryDSL 中, BooleanBuilder 是一个非常有用的工具类。...extends Boolean> getType() 返回布尔类型的类对象。 Class<?...String predicateString = builder.toString(); 二、案例 为了更好地理解 BooleanBuilder 的使用,我们将通过几个完整的案例来展示如何在实际应用中利用这个类构建复杂的查询条件...import com.querydsl.core.BooleanBuilder; import com.querydsl.sql.SQLQueryFactory; import java.util.List...通过链式调用,开发者可以轻松地组合多个条件,从而生成复杂的查询逻辑。在实际应用中,它常用于构建动态查询条件,根据不同的业务需求生成相应的 SQL 语句。

    51400

    第四十五章:基于SpringBoot 设计业务逻辑异常统一处理

    异常处理核心子模块 我们创建一个名为springboot-core-exception的子模块,在该模块内自定义一个LogicException运行时异常类,继承RuntimeException并重写构造函数...,创建实体类实现LogicExceptionMessage接口并重写getMessage(String errCode)方法我们就可以通过spring IOC获取实现类实例进行操作获取数据,下面我们在编写使用异常模块时会涉及到...LogicExceptionMessage实现类定义 我们在springboot-exception-core核心模块内添加了LogicExceptionMessage接口定义,需要我们实现该接口的getMessage...方法核心模块,这样才可以获取数据库内对应的异常信息,实现类如下所示: /** * 业务逻辑异常消息获取实现类 * - 消息可以从数据库内获取 * - 消息可从Redis内获取 * =======...@Builder注解,配置该注解的实体会自动在.class文件内添加内部类实现设计模式,部分自动生成代码如下: // ... public static class ApiResponseEntityBuilder

    2.1K40

    Spring Data Jpa最佳实践

    这里其实是一个典型的代理模式的应用,只要继承了最底层的Repository接口,在应用启动时就会帮你生成一个代理实例,而真正的目标类才是最终执行查询的类,这个类就是:SimpleJpaRepository...Querydsl定义了一套和JpaSpecification类似的接口,使用方式上也类似,由于QueryDsl多了一个maven插件,可以在编译期间生成领域对象操作实体,所以在拼接复杂的查询条件时相比较...下面看下怎么集成: 1、快速集成 因为之前有写过最简单的QueryDsl集成方式,所以这里就不在赘述了,具体参见《Querydsl结构化查询之jpa》, 2、丰富BaseJpaRepository基类...集成QueryDsl后,复杂分页查询的画风就变的更加清爽了,如: /** * QSendLog实体是QueryDsl插件自动生成的,插件会自动扫描加了@Entity的实体,生成一个用于查询的...使用方式如下: /** * QSendLog实体是QueryDsl插件自动生成的,插件会自动扫描加了@Entity的实体,生成一个用于查询的EntityPath类 */

    84620
    领券