1. 程式人生 > 資料庫 >基於JPQL實現純SQL語句方法詳解

基於JPQL實現純SQL語句方法詳解

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;
}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。