日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java criteria and_criteria用法

發布時間:2023/12/2 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java criteria and_criteria用法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Criteria Query通過面向對象化的設計,將數據查詢條件封裝為一個對象。簡單來講,Criteria Query可以看作是傳統SQL的對象化表示,如:

Java代碼

Criteria criteria = session.createCriteria(User.class);

criteria.add(Expression.eq("name","Erica"));

criteria.add(Expression.eq("sex",new Integer(1)));

Criteria 查詢表達式

Criteria 本身只是一個查詢容器,具體的查詢條件需要通過Criteria.add方法添加到Criteria實例中。 如前例所示,Expression 對象具體描述了查詢條件。針對SQL 語法,Expression提供了對應的查詢限定機制,包括:

Java代碼

Expression.eq 對應SQL“field = value”表達式。 如Expression.eq("name","Erica")

Expression.allEq 參數為一個Map對象,其中包含了多個屬性-值對應關系。相當于多個Expression.eq關系的疊加。

Expression.gt 對應SQL中的 “field > value ” 表達式

Expression.ge 對應SQL中的 “field >= value” 表達式

Expression.lt 對應SQL中的 “field < value” 表達式

Expression.le 對應SQL中的 “field <= value” 表達式

Expression.between 對應SQL中的 “between” 表達式

如下面的表達式表示年齡(age)位于13到50區間內。

Java代碼

Expression.between("age",new Integer(13),new Integer(50));

表達式

Java代碼

Expression.in 對應SQL中的 ”field in …” 表達式

Expression.eqProperty 用于比較兩個屬性之間的值,對應SQL中的“field = field”。 如:

Expression.eqProperty( "TUser.groupID", "TGroup.id" );

Expression.gtProperty 用于比較兩個屬性之間的值,對應SQL中的“field > field”。

Expression.geProperty 用于比較兩個屬性之間的值,對應SQL中的“field >= field”。

Expression.ltProperty 用于比較兩個屬性之間的值,對應SQL中的“field < field”。

Expression.leProperty 用于比較兩個屬性之間的值,對應SQL中的“field <= field”。

Expression.and and關系組合。 如:

Expression.and( Expression.eq("name","Erica"), Expression.eq( "sex", new Integer(1) ) );

Expression.or or關系組合。 如:

Expression.or( Expression.eq("name","Erica"), Expression.eq("name","Emma") );

Expression.sql 作為補充,本方法提供了原生SQL語法的支持。我們可以通過這個方法直接通過SQL語句限定查詢條件。 下面的代碼返回所有名稱以“Erica”起始的記錄:

Java代碼

Expression.sql( “lower({alias}.name) like lower(?)”, "Erica%", Hibernate.STRING );

Expression.sql( “lower({alias}.name) like lower(?)”, "Erica%", Hibernate.STRING );

其中的“{alias}”將由Hibernate在運行期使用當前關聯的POJO別名替換。 注意Expression 各方法中的屬性名參數(如Express.eq中的第一個參數),這里 所謂屬性名是POJO中對應實際庫表字段的屬性名(大小寫敏感),而非庫表中的實際字段名稱。

Criteria 高級特性

限定返回的記錄范圍

通過criteria. setFirstResult/setMaxResults 方法可以限制一次查詢返回的記錄范圍:

Java代碼

Criteria?? criteria = session.createCriteria(TUser.class);

//限定查詢返回檢索結果中,從第一百條結果開始的20條記錄

criteria.setFirstResult(100);

criteria.setMaxResults(20);

對查詢結果進行排序

//查詢所有groupId=2的記錄

//并分別按照姓名(順序)和groupId(逆序)排序

Criteria? criteria = session.createCriteria(TUser.class);

criteria.add(Expression.eq("groupId",new Integer(2)));

criteria.addOrder(Order.asc("name"));

criteria.addOrder(Order.desc("groupId"));

Criteria criteria = session.createCriteria(TUser.class);

//限定查詢返回檢索結果中,從第一百條結果開始的20條記錄

criteria.setFirstResult(100);

criteria.setMaxResults(20);

對查詢結果進行排序

//查詢所有groupId=2的記錄

//并分別按照姓名(順序)和groupId(逆序)排序

Criteria criteria = session.createCriteria(TUser.class);

criteria.add(Expression.eq("groupId",new Integer(2)));

criteria.addOrder(Order.asc("name"));

criteria.addOrder(Order.desc("groupId"));

分享到:

2009-06-01 09:20

瀏覽 7961

評論

2 樓

senhui19

2010-11-12

嗯,寫的不錯,收藏起來方便以后查看,呵呵~~

1 樓

hanz188

2010-07-30

樓主總結的真好,我看完之后基本上就了解了criteria的概念和用法了。如果頁面能夠重新排下版就更好了,另外,最后一段代碼重復了,能不能刪除一個。

總結

以上是生活随笔為你收集整理的java criteria and_criteria用法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。