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