基於JPQL實現純SQL語句方法詳解
阿新 • • 發佈:2020-09-29
JPQL全稱Java Persistence Query Language。
基於首次在EJB2.0中引入的EJB查詢語言(EJB QL),Java持久化查詢語言(JPQL)是一種可移植的查詢語言,旨在以面向物件表示式語言的表示式,將SQL語法和簡單查詢語義繫結在一起·使用這種語言編寫的查詢是可移植的,可以被編譯成所有主流資料庫伺服器上的SQL。
其特徵與原生SQL語句類似,並且完全面向物件,通過類名和屬性訪問,而不是表名和表的屬性。
使用JPQL,需要把SQL語句修改成類似HQL 語句。SQL 查詢的是資料庫,而JPQL 查詢的是物件和屬性,在語法上是有些不同的。對於有些用JPQL 無法寫出來的查詢,還是使用原生SQL寫出來方便
以下給出一個例子,注意語法的區別:
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天的資料
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; }
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。