DetachedCriteria與Criteria的用方有哪些不同-創新互聯

這期內容當中小編將會給大家帶來有關DetachedCriteria與Criteria的用方有哪些不同,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

創新互聯從2013年成立,是專業互聯網技術服務公司,擁有項目成都網站設計、成都網站制作、外貿網站建設網站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元雁峰做網站,已為上家服務,為雁峰各地企業和個人服務,聯系電話:13518219792

在常規的Web編程中,有大量的動態條件查詢,即用戶在網頁上面自由選擇某些條件,程序根據用戶的選擇條件,動態生成SQL語句,進行查詢。

比如,我記得在Facebook中可以選擇高級查詢條件,這個就是個動態的查詢了塞,我們無法預知使用多少個查詢,直接書寫死了在我們的Dao層顯然是不服和我們的意思的塞

針對這種需求,對于分層應用程序來說,Web層需要傳遞一個查詢的條件列表給業務層對象,業務層對象獲得這個條件列表之后,然后依次取出條件,構造查詢語句。這里的一個難點是條件列表用什么來構造?傳統上使用Map,但是這種方式缺陷很大,Map可以傳遞的信息非常有限,只能傳遞name和value,無法傳遞究竟要做怎樣的條件運算,究竟是大于,小于,like,還是其它的什么,業務層對象必須確切掌握每條entry的隱含條件。因此一旦隱含條件改變,業務層對象的查詢構造算法必須相應修改,但是這種查詢條件的改變是隱式約定的,而不是程序代碼約束的,因此非常容易出錯。

DetachedCriteria可以解決這個問題,即在web層,程序員使用DetachedCriteria來構造查詢條件,然后將這個 DetachedCriteria作為方法調用參數傳遞給業務層對象。而業務層對象獲得DetachedCriteria之后,可以在session范圍內直接構造Criteria,進行查詢。就此,查詢語句的構造完全被搬離到web層實現,而業務層則只負責完成持久化和查詢的封裝即可,與查詢條件構造完全解耦,非常完美!

Criteria 和 DetachedCriteria 的主要區別

在于創建的形式不一樣, Criteria 是在線的,所以它是由 Hibernate Session 進行創建的,而 DetachedCriteria 是離線的,創建時無需Session .

DetachedCriteria的創建

DetachedCriteria 提供了 2 個靜態方法 ,進行DetachedCriteria 實例的創建。
forClass(Class)
forEntityName(Name)

Spring 的框架提供了對于離線查詢的支持,非常的簡單的使用那些方法

Spring 的框架提供了getHibernateTemplate().findByCriteria(detachedCriteria) 方法可以很方便地根據DetachedCriteria 來返回查詢結果。Criteria的子類就是 DetachedCriteria 我們可以簡單的使用就好了。

使用到了這些我們就不得不說 Restrictions

是產生查詢條件的工具類。Restrictions表達式如下
HQL運算符 QBC運算符 含義
= Restrictions.eq() 等于equal
<> Restrictions.ne() 不等于 not equal

 Restrictions.gt() 大于greater than 
= Restrictions.ge() 大于等于 greater than or equal 
< Restrictions.lt() 小于less than 
<= Restrictions.le() 小 于 等 于 less than or equal 
is null Restrictions.isnull() 等于空值 
is not null Restrictions.isNotNull() 非空值 
like Restrictions.like() 字符串模式匹配 
and Restrictions.and() 邏輯與 
and Restrictions.conjunction() 邏輯與 
or Restrictions.or() 邏輯或 
or Restrictions.disjunction() 邏輯或 
not Restrictions.not() 邏輯非 
in(列表) Restrictions.in() 等于列表中的某一個值 
not in(列表) Restrictions.not(Restrictions.in()) 不等于列表中任意一個值 
between x and y Restrictions.between() 閉區間 xy中的任意值 
not between x and y Restrictions.not(Restrictions..between()) 小于值X 或者大于值y

當前名稱:DetachedCriteria與Criteria的用方有哪些不同-創新互聯
鏈接地址:http://m.kartarina.com/article18/cdcjgp.html

成都網站建設公司_創新互聯,為您提供電子商務全網營銷推廣定制網站商城網站做網站手機網站建設

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

成都app開發公司
主站蜘蛛池模板: 中文有码vs无码人妻| 色综合久久久无码中文字幕| 日韩AV无码中文无码不卡电影| 国产免费无码AV片在线观看不卡| 亚洲人片在线观看天堂无码| 天堂Aⅴ无码一区二区三区| 在线观看无码AV网站永久免费| 惠民福利中文字幕人妻无码乱精品| 久久久久无码精品国产不卡| 精品久久久久久无码人妻热| 久久水蜜桃亚洲AV无码精品| 无码精品人妻一区二区三区人妻斩| 精品韩国亚洲av无码不卡区| 中文无码精品A∨在线观看不卡| 精品久久久无码中文字幕| 亚洲av无码专区国产不乱码| 久久人妻内射无码一区三区| 精品久久久久久无码人妻热| 亚洲av成人中文无码专区| 中文无码字慕在线观看| 久久久久久AV无码免费网站| 精品无码综合一区| 一本大道无码人妻精品专区| 国产精品亚洲а∨无码播放麻豆| 亚洲熟妇无码八V在线播放| 亚洲AV无码一区二区三区人| 人妻丰满熟妇av无码区不卡| 日韩AV无码久久一区二区| 亚洲AV无码久久精品成人| 中文字幕无码毛片免费看| 亚洲Av无码国产情品久久| 国产精品午夜无码体验区| 国产精品无码一区二区在线 | 无码一区二区三区AV免费| 亚洲av无码国产综合专区| 精品国产一区二区三区无码| 精品无码国产自产在线观看水浒传 | 无码乱码av天堂一区二区| 亚洲精品午夜无码电影网| 国精无码欧精品亚洲一区| 日韩加勒比一本无码精品|