Criteria查詢對查詢條件進行了面向對象封裝,符合編程人員的思惟方式,不過HQL(Hibernate Query Language)查詢提供了更加豐富的和靈活的查詢特性,所以Hibernate將HQL查詢方式立爲官方推薦的標準查詢方式,HQL查詢在涵蓋 Criteria查詢的全部功能的前提下,提供了相似標準SQL語句的查詢方式,同時也提供了更加面向對象的封裝。如下就是HQL的一些經常使用函數,有了這 些函數,咱們就能夠擁有更多的靈活性,好比HQL如何取餘,HQL如何返回集合的最值,HQL字符串處理,HQL時間、日期處理等。數據庫
函數名稱 | 說明 | 類型 | 支持 | 使用方法 | 備註 |
ABS(n) | 取絕對值 | 數學函數 | JPAQL HQL | ABS(column_name[數字類型對象屬性]) | |
SQRT(n) | 取平方根 | 數學函數 | JPAQL HQL | SQRT(column_name[數字類型對象屬性]) | |
MOD(x,y) | 取餘數 | 數學函數 | JPAQL HQL | MOD([對象屬性(數字)或值],[對象屬性(數字)或值]) | 數字必須是整型,返回參數1/參數2得的餘數 |
SIZE(c) | 方法集合內對象數量 | 集合函數 | JPAQL HQL | ||
MINELEMENT(c) | 返回集合中最小元素 | 集合函數 | HQL | ||
MAXELEMENT(c) | 返回集合中最大元素 | 集合函數 | HQL | ||
MININDEX(c) | 返回索引集合最小索引 | 集合函數 | HQL | ||
MAXINDEX(c) | 返回索引集合最大索引 | 集合函數 | HQL | ||
MAX(n) | 返回最大值 | 集合函數 | JPQHQL HQL | ||
MIN(n) | 返回最小值 | 集合函數 | JPQHQL HQL | ||
COUNT(n) | 返回計數 | 集合函數 | JPQHQL HQL | ||
CONCAT(s1,s2) | 鏈接連個字符串 | 字符串函數 | JPQHQL HQL | CONCAT([對象屬性],[對象屬性]) | |
SUBSTRING(s,offset,length) | 返回子串 | 字符串函數 | JPQHQL HQL | SUBSTRING([要截取的字符串屬性字段],開始位置,截取長度) | |
TRIM([[BOTH/LEADING/TRAILING]] char FROM s) | 默認去掉字符串兩面的空格 | 字符串函數 | JPQHQL HQL | TRIM([字符串對象屬性列]) | 將字段兩端的空格去掉 |
LOWER(s) | 小寫 | 字符串函數 | JPQHQL HQL | LOWER([字符串對象屬性列]) | 將該列結果含有的字母所有大寫 |
UPPER(s) | 大寫 | 字符串函數 | JPQHQL HQL | UPPER([字符串對象屬性列]) | 將該列結果含有的字母所有大寫 |
LENGTH(s) | 返回字符串長度 | 字符串函數 | JPQHQL HQL | LENGTH(字段名) | 返回字段內容的長度,包括數字。null值返回null. |
CURRENT_DATE() | 返回數據庫當前日期 | 時間函數 | JPAQL HQL | CURRENT_DATE() | 返回數據庫當前日期 |
CURRENT_TIME() | 時間 | 時間函數 | JPAQL HQL | CURRENT_TIME() | 返回數據庫當前時間 |
SECOND(d) | 從日期中提取具體秒 | 時間函數 | HQL | SECOND(時間字段) | 空的時候返回null |
MINUTE(d) | 從日期中提取具體分 | 時間函數 | HQL | MINUTE(時間字段) | 空的時候返回null |
HOUR(d) | 從日期中提取具體小時 | 時間函數 | HQL | HOUR(時間字段 | 空的時候返回null |
DAY(d) | 從日期中提取具體天 | 時間函數 | HQL | DAY(時間字段) | 空的時候返回null |
MONTH(d) | 從日期中提取具體月 | 時間函數 | HQL | MONTH(時間字段) | 空的時候返回null |
YEAR(d) | 從日期中提取具體年 | 時間函數 | HQL | YEAR(時間字段) | 空的時候返回null |