天天看點

JPQL語言和Query接口

【1】JPQL語言

JPQL語言,即 Java Persistence Query Language 的簡稱。

JPQL 是一種和 SQL 非常類似的中間性和對象化查詢語言,它最終會被編譯成針對不同底層資料庫的 SQL 查詢,進而屏蔽不同資料庫的差異。

JPQL語言的語句可以是 select 語句、update 語句或delete語句,它們都通過 Query 接口封裝執行。

注意:JPQL語言不支援insert語句!

【2】Query接口

javax.persistence.Query接口封裝了執行資料庫查詢的相關方法。調用 EntityManager 的 createQuery、create NamedQuery 及 createNativeQuery 方法可以獲得查詢對象,進而可調用 Query 接口的相關方法來執行查詢操作。

Query接口的主要方法

① int executeUpdate()

用于執行update或delete語句。

② List getResultList()

用于執行select語句并傳回結果集實體清單。

③ Object getSingleResult()

用于執行隻傳回單個結果實體的select語句。

④ Query setFirstResult(int startPosition)

用于設定從哪個實體記錄開始傳回查詢結果。

⑤ Query setMaxResults(int maxResult)

用于設定傳回結果實體的最大數。與setFirstResult結合使用可實作分頁查詢。

⑥ Query setFlushMode(FlushModeType flushMode)

設定查詢對象的Flush模式。

參數可以取2個枚舉值:

FlushModeType.AUTO 為自動更新資料庫記錄;
FlushMode Type.COMMIT 為直到送出事務時才更新資料庫記錄。      

⑦ setHint(String hintName, Object value)

設定與查詢對象相關的特定供應商參數或提示資訊。參數名及其取值需要參考特定 JPA 實作庫提供商的文檔。如果第二個參數無效将抛出IllegalArgumentException異常。

⑧ setParameter(int position, Object value)

為查詢語句的指定位置參數指派。Position 指定參數序号,value 為賦給參數的值。

⑨ setParameter(int position, Date d, TemporalType type)

為查詢語句的指定位置參數賦 Date 值。

Position 指定參數序号,value 為賦給參數的值,temporalType 取 TemporalType 的枚舉常量,包括 DATE、TIME 及 TIMESTAMP 三個。用于将 Java 的 Date 型值臨時轉換為資料庫支援的日期時間類型(java.sql.Date、java.sql.Time及java.sql.Timestamp)。

⑩ setParameter(int position, Calendar c, TemporalType type)

為查詢語句的指定位置參數賦 Calenda r值。position 指定參數序号,value 為賦給參數的值,temporalType 的含義及取舍同前。

(11) setParameter(String name, Object value)

為查詢語句的指定名稱參數指派。

(12) setParameter(String name, Date d, TemporalType type)

為查詢語句的指定名稱參數賦 Date 值。TemporalType type用法同前。

(13) setParameter(String name, Calendar c, TemporalType type)

為查詢語句的指定名稱參數設定Calendar值。