日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

QueryDSL介绍

發(fā)布時間:2023/12/20 编程问答 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 QueryDSL介绍 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

·?QueryDSL僅僅是一個通用的查詢框架,專注于通過Java API構(gòu)建類型安全的SQL查詢。

·?Querydsl可以通過一組通用的查詢API為用戶構(gòu)建出適合不同類型ORM框架或者是SQL的查詢語句,也就是說QueryDSL是基于各種ORM框架以及SQL之上的一個通用的查詢框架。

借助QueryDSL可以在任何支持的ORM框架或者SQL平臺上以一種通用的API方式來構(gòu)建查詢。目前QueryDSL支持的平臺包括 JPA,JDO,SQL,Java Collections,RDF,Lucene,Hibernate Search。MONGODB

非常好的一個東西 防止數(shù)據(jù)庫的差異 sql的寫錯

下面我們來怎么是用querydslspring整合 springquerdsl提供了 支持 那就是模板方式queryDslJdbcTemplate 封裝了querydsl 的處理 怎么使用 我們下一張詳細(xì)說明

第一步 我們pom要加入相關(guān)依賴 上一篇文章 已經(jīng)加入了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 在類上用

在相應(yīng)的實體上加了上述注解后 再在pom.xml加入相應(yīng)的插件

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>

第二種 數(shù)據(jù)方式 個人最推薦 也是最好的

在數(shù)據(jù)庫中建好生成表 然后寫一個工具類 工具類只要一下幾句

MetaDataExporter exporter = new MetaDataExporter();

exporter.setPackageName("com.cn21.talk.qmodel");

exporter.setTargetFolder(new File("src/main/java"));

exporter.setTableNamePattern(tabName);

exporter.export(conn.getMetaData());

執(zhí)行生成后的Qmodel如圖所示

至此 整合querydsl已經(jīng)全部完成 下一張 將開啟querydsl使用教程篇章

?

總結(jié)

以上是生活随笔為你收集整理的QueryDSL介绍的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。