基于JPQL實(shí)現(xiàn)純SQL語(yǔ)句方法詳解
JPQL全稱Java Persistence Query Language。
基于首次在EJB2.0中引入的EJB查詢語(yǔ)言(EJB QL),Java持久化查詢語(yǔ)言(JPQL)是一種可移植的查詢語(yǔ)言,旨在以面向?qū)ο蟊磉_(dá)式語(yǔ)言的表達(dá)式,將SQL語(yǔ)法和簡(jiǎn)單查詢語(yǔ)義綁定在一起·使用這種語(yǔ)言編寫的查詢是可移植的,可以被編譯成所有主流數(shù)據(jù)庫(kù)服務(wù)器上的SQL。
其特征與原生SQL語(yǔ)句類似,并且完全面向?qū)ο螅ㄟ^類名和屬性訪問,而不是表名和表的屬性。
使用JPQL,需要把SQL語(yǔ)句修改成類似HQL 語(yǔ)句。SQL 查詢的是數(shù)據(jù)庫(kù),而JPQL 查詢的是對(duì)象和屬性,在語(yǔ)法上是有些不同的。對(duì)于有些用JPQL 無法寫出來的查詢,還是使用原生SQL寫出來方便
以下給出一個(gè)例子,注意語(yǔ)法的區(qū)別:
JPQL查詢
@PersistenceContext
protected EntityManager em;
public List<Video> findVideoList1() {
String hql = "from Video order by id desc";
Query query = em.createQuery(hql);
List<Video> result = query.getResultList();
em.clear();
return result;
}
SQL查詢
查詢最近7天的數(shù)據(jù)
public List<Video> findVideoList2() {
List<Video> result = (List<Video>) em.createNativeQuery
("select * from db_video where date_sub(curdate(), interval 6 day) <= date(date) order by date desc", Video.class)
.getResultList();
return result;
}
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- JPA之使用JPQL語(yǔ)句進(jìn)行增刪改查
- mysql5.7.19 解壓版安裝教程詳解(附送純凈破解中文版SQLYog)
- 純Python開發(fā)的nosql數(shù)據(jù)庫(kù)CodernityDB介紹和使用實(shí)例
- 3步搞定純真IP數(shù)據(jù)導(dǎo)入到MySQL的方法詳解
- 用純CSS+DIV寫的漂亮Flash幻燈片及SQL標(biāo)簽教程!
- SQL刪除語(yǔ)句DROP、TRUNCATE、 DELETE 的區(qū)別
- mybatis-plus配置控制臺(tái)打印完整帶參數(shù)SQL語(yǔ)句的實(shí)現(xiàn)
- 在IDEA中安裝MyBatis Log Plugin插件,執(zhí)行mybatis的sql語(yǔ)句(推薦)
相關(guān)文章
mysql查詢時(shí)offset過大影響性能的原因和優(yōu)化詳解
這篇文章主要給大家介紹了關(guān)于mysql查詢時(shí)offset過大影響性能的原因和優(yōu)化的相關(guān)資料,并在文末跟大家分享了MYSQL中l(wèi)imit,offset的區(qū)別,需要的朋友可以參考借鑒,下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2018-06-06
MySql UNION 一行轉(zhuǎn)多列的實(shí)現(xiàn)示例
在MySQL命令行中,有時(shí)候我們會(huì)遇到一行的數(shù)據(jù)需要以多列的形式呈現(xiàn)的情況,本文就詳細(xì)介紹了一下一行轉(zhuǎn)多列的實(shí)現(xiàn)示例,具有一定的參考價(jià)值,感興趣的可以了解一下2023-08-08
將MySQL的臨時(shí)目錄建立在內(nèi)存中的教程
這篇文章主要介紹了將MySQL的臨時(shí)目錄建立在內(nèi)存中的教程,以獲得不關(guān)機(jī)情況下的高性能使用,需要的朋友可以參考下2015-04-04
mysql部分字符存儲(chǔ)報(bào)錯(cuò) Incorrect string value問題解決
MySQL中的utf-8字符集并不完全支持utf-8,本文這要介紹了mysql部分字符存儲(chǔ)報(bào)錯(cuò) Incorrect string value問題解決,具有一定的參考價(jià)值,感興趣的可以了解一下2023-07-07
mysql修改sql_mode報(bào)錯(cuò)的解決
今天在Navicat中運(yùn)行sql語(yǔ)句創(chuàng)建數(shù)據(jù)表出現(xiàn)了錯(cuò)誤Err 1067。本文主要介紹了mysql修改sql_mode報(bào)錯(cuò)的解決,感興趣的可以了解一下2021-09-09
MySQL數(shù)據(jù)分析存儲(chǔ)引擎示例講解
這篇文章主要為大家介紹了MySQL數(shù)據(jù)分析關(guān)于存儲(chǔ)引擎的示例講解,搞懂存儲(chǔ)引擎會(huì)對(duì)大家在數(shù)據(jù)分析方面有很大的幫助,有需要的朋友可以借鑒參考下2021-10-10
MySQL?中的服務(wù)器配置和狀態(tài)詳解(MySQL?Server?Configuration?and?Statu
MySQL服務(wù)器配置和狀態(tài)設(shè)置包括服務(wù)器選項(xiàng)、系統(tǒng)變量和狀態(tài)變量三個(gè)方面,可以通過命令行、配置文件或SQL語(yǔ)句進(jìn)行設(shè)置和查看,服務(wù)器選項(xiàng)和系統(tǒng)變量可以是全局或會(huì)話級(jí)別的,狀態(tài)變量只讀且不可修改,sql_mode是一個(gè)特殊的變量,影響SQL語(yǔ)句的執(zhí)行模式,感興趣的朋友一起看看吧2025-02-02

