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介绍的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【mysql】触发器的实例详解
- 下一篇: 错误 Every derived tab