QueryDSL介绍
· QueryDSL仅仅是一个通用的查询框架,专注于通过Java API构建类型安全的SQL查询。
· Querydsl可以通过一组通用的查询API为用户构建出适合不同类型ORM框架或者是SQL的查询语句,也就是说QueryDSL是基于各种ORM框架以及SQL之上的一个通用的查询框架。
借助QueryDSL可以在任何支持的ORM框架或者SQL平台上以一种通用的API方式来构建查询。目前QueryDSL支持的平台包括 JPA,JDO,SQL,Java Collections,RDF,Lucene,Hibernate Search。MONGODB
非常好的一个东西 防止数据库的差异 sql的写错
下面我们来怎么是用querydsl与 spring整合 spring对querdsl提供了 支持 那就是模板方式queryDslJdbcTemplate 封装了querydsl 的处理 怎么使用 我们下一张详细说明
第一步 我们pom要加入相关依赖 上一篇文章 已经加入了querydsl 还需要加入
<dependency><groupId>org.springframework.data</groupId><artifactId>spring-data-jdbc-core</artifactId><version>1.0.0.RELEASE</version></dependency>
第二步 在spring-jdbc.xml加入
<bean id="queryDslJdbcTemplate" class="org.springframework.data.jdbc.query.QueryDslJdbcTemplate">
<constructor-arg ref="dataSource" />
</bean>
第三步 不得不提的就是querydsl 都是使用中间实体Qmodel 也就是querydslModel 这些实体是用工具生成的
生成方式 有好几种 第一种 插件方式 这种方式 注意的就是配置的生成文件目录一定要事先建好,还有个就是querydsl的注解
@QuerySupertype 在父类用
@QueryEntity 在类上用
在相应的实体上加了上述注解后 再在pom.xml加入相应的插件
1.jdbc普通的方式
<plugin><groupId>com.mysema.maven</groupId>
<artifactId>apt-maven-plugin</artifactId>
<version>1.0.8</version>
<dependencies>
<dependency>
<groupId>com.mysema.querydsl</groupId>
<artifactId>querydsl-apt</artifactId>
<version>${querydsl.version}</version>
</dependency>
</dependencies>
<executions>
<execution>
<phase>generate-sources</phase>
<goals>
<goal>process</goal>
</goals>
<configuration>
<outputDirectory>target/generated-sources/java</outputDirectory>//切记切记 这个目录一定要事先建好 否则无法生成qmodel
<processor>com.mysema.query.apt.QuerydslAnnotationProcessor</processor>
</configuration>
</execution>
</executions></plugin>
2 hibernate or jpa or spring data 的插件配置
HIBERNATE
<plugin>
<groupId>com.mysema.maven</groupId>
<artifactId>maven-apt-plugin</artifactId>
<version>0.3.2</version>
<executions>
<execution>
<goals>
<goal>process</goal>
</goals>
<configuration>
<outputDirectory>target/generated-sources/java</outputDirectory>
<processor> com.mysema.query.apt.hibernate.HibernateAnnotationProcessor</processor>
</configuration>
</execution>
</executions>
</plugin>
JPA
<plugin>
<groupId>com.mysema.maven</groupId>
<artifactId>maven-apt-plugin</artifactId>
<version>0.3.2</version>
<executions>
<execution>
<goals>
<goal>process</goal>
</goals>
<configuration>
<outputDirectory>target/generated-sources/java</outputDirectory>
<processor>com.mysema.query.apt.jpa.JPAAnnotationProcessor</processor>
</configuration>
</execution>
</executions>
</plugin>
mongodb
<plugin>
<groupId>com.mysema.maven</groupId>
<artifactId>maven-apt-plugin</artifactId>
<version>1.0</version>
<executions>
<execution>
<goals>
<goal>process</goal>
</goals>
<configuration>
<outputDirectory>${generatedSources}<outputDirectory>
<processor>com.mysema.query.mongodb.morphia.MorphiaAnnotationProcessor</processor>
</configuration>
</execution>
</executions>
</plugin>
第二种 数据方式 个人最推荐 也是最好的
在数据库中建好生成表 然后写一个工具类 工具类只要一下几句
MetaDataExporter exporter = new MetaDataExporter();
exporter.setPackageName("com.cn21.talk.qmodel");
exporter.setTargetFolder(new File("src/main/java"));
exporter.setTableNamePattern(tabName);
exporter.export(conn.getMetaData());
执行生成后的Qmodel如图所示
至此 整合querydsl已经全部完成 下一张 将开启querydsl使用教程篇章
QueryDSL介绍相关推荐
- SpringBoot12 QueryDSL01之QueryDSL介绍、springBoot项目中集成QueryDSL、利用QueryDSL实现单表RUD、新增类初始化逻辑...
1 QueryDSL介绍 1.1 背景 QueryDSL的诞生解决了HQL查询类型安全方面的缺陷:HQL查询的扩展需要用字符串拼接的方式进行,这往往会导致代码的阅读困难:通过字符串对域类型和属性的不安 ...
- #研发解决方案介绍#基于ES的搜索+筛选+排序解决方案
郑昀 基于胡耀华和王超的设计文档 最后更新于2014/12/3 关键词:ElasticSearch.Lucene.solr.搜索.facet.高可用.可伸缩.mongodb.SearchHub.商品中 ...
- querydsl动态 sql_Spring data jpa 复杂动态查询方式总结
一.Spring data jpa 简介 首先JPA是Java持久层API,由Sun公司开发, 希望整合ORM技术,实现天下归一. 诞生的缘由是为了整合第三方ORM框架,建立一种标准的方式,目前也是 ...
- Elasticsearch 基本介绍及其与 Python 的对接实现
什么是 Elasticsearch 想查数据就免不了搜索,搜索就离不开搜索引擎,百度.谷歌都是一个非常庞大复杂的搜索引擎,他们几乎索引了互联网上开放的所有网页和数据.然而对于我们自己的业务数据来说,肯 ...
- Spring Data JPA REST Query QueryDSL
案例概述 在本教程中,我们将研究使用Spring Data JPA和Querydsl为REST API构建查询语言. 在本系列的前两篇文章中,我们使用JPA Criteria和Spring Data ...
- Spring Boot (六): 为 JPA 插上翅膀的 QueryDSL
在前面的文章中,我们介绍了 JPA 的基础使用方式,<Spring Boot (三): ORM 框架 JPA 与连接池 Hikari>,本篇文章,我们由入门至进阶的介绍一下为 JPA 插上 ...
- Spring JPA整合QueryDSL
前言 Spring JPA是目前比较常用的ORM解决方案,但是其对于某些场景并不是特别的方便,例如查询部分字段,联表查询,子查询等. 而接下来我会介绍与JPA形成互补,同时也是与JPA兼容得很好的框架 ...
- java dsl框架_Spring Boot整合QueryDSL的实现示例
之前研究Jooq,今天来研究一下搭配JPA的QueryDSL吧. 简介 Querydsl是一个Java开源框架用于构建类型安全的SQL查询语句.它采用API代替拼凑字符串来构造查询语句.可跟 Hibe ...
- JspXCMS自学(一)JspXCMS介绍
一.CMS是什么? CMS是Content Management System的缩写,意为"内容管理系统",它具有许多基于模板的优秀设计,可以加快网站开发的速度和减少开发的成本.通 ...
- Elasticsearch的介绍 以及使用python操作es详细步骤
一. 什么是 Elasticsearch 想查数据就免不了搜索,搜索就离不开搜索引擎,百度.谷歌都是一个非常庞大复杂的搜索引擎,他们几乎索引了互联网上开放的所有网页和数据.然而对于我们自己的业务数据来 ...
最新文章
- 用漫画了解 Linux 内核到底长啥样!
- Windows开启WMI时一些总结
- JS表格分页(封装版)
- python怎样把两个图画到一起_python实现两张图片拼接为一张图片并保存
- SpringBoot:与MyBatis合作
- LeetCode 395. 至少有K个重复字符的最长子串(分治)
- python多线程输出_萌新python多线程
- java.io下载_java io 文件下载
- Github | PyTorch实现的深度强化学习算法集
- 【LeetCode】【HOT】105. 从前序与中序遍历序列构造二叉树(哈希表+递归)
- hibernate 一对多_为什么很多人不愿意用hibernate了?
- oracle mysql us7acsii_有关oracle数据库us7ascii字符集转换策略的探讨
- Windows Server 2012 Backup安装
- 联想微型计算机m8000u配置,联想的产品介绍-20210412075714.pdf-原创力文档
- 【UE4】蓝图转为C++官方教程部分笔记
- vue 移动端音乐(3) amp;amp;gt;热门歌单推荐部分(webpack-dev-conf.js做后端接口代理+scroll插件)
- 2019第五届中国诗歌春晚致敬先贤
- Illustrator “图像裁切”功能如何使用?
- 常见嵌入式/C/C++面试题100+集合(含参考答案)-更新中
- Black Duck
热门文章
- C# 实现局域网的windows环境下的桌面分享
- php wind8.5,PHPWind 8.5 正式版源码下载
- windows 用户基本查看命令
- 计算机上键盘无法输入法,电脑中输入法设置窗口提示检测到不兼容的键盘驱动的解决方法...
- activex 控件 过期,解决“无法注册Flash Player 的ActiveX控件”的问题
- OpenCore引导配置说明第十一版说明-基于OpenCore-0.6.4正式版
- pdf (便携式文档格式)
- 【科研论文】找到中文论文的英文引用格式
- scrapy框架使用教程
- Android 11 存储权限适配指南