<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 66,  comments - 11,  trackbacks - 0
    Hibernate數據檢索:
    Criteria Query:通過面向對象化的設計,將數據查詢條件封裝為一個對象。Criteria本身只是一個查詢容器,具體的查詢條件需要通過Criteria.add方法添加到Criteria實例中。Expression對象具體描述了查詢條件。
    示例查詢并不常用,一方面它的使用比較繁瑣,另外從可讀性上來講也不如Expression來的直觀。但是在某些情況下卻有其特別的用途。
    示例查詢最常用的場景是組合查詢。我們常常需要在界面上提供若干查詢選項,然后根據用戶的選擇返回復合條件的結果。實例查詢在這里能發
    揮其特長:
    package com.wyq.demo.common.criteriaquery;

    import java.util.Iterator;

    import org.hibernate.Criteria;
    import org.hibernate.Session;
    import org.hibernate.criterion.DetachedCriteria;
    import org.hibernate.criterion.Example;
    import org.hibernate.criterion.Expression;
    import org.hibernate.criterion.Order;
    import org.hibernate.criterion.Projections;

    /** 
     * 
    @author 作者 
     * 
    @version 創建時間:2008-11-29 上午09:26:48 
     * 類說明 
     
    */
    public class TestCriteria {

        
    /**
         * @authorwyq
         * @功能:
         * 
    @param args
         
    */
        
    public static void main(String[] args) {
            Session session 
    = null;
            
    //新建一個criteria查詢容器
            Criteria criteria = session.createCriteria(TUser.class);
            
    /*(1)cireria查詢
             * 構造查詢條件,Expression對象具體描述了查詢條件
             * 在Hibernate3中,引入了Restrictions類作為Expression的替代
             *  Expression.eq                  等于
             * Expression.allEq               參數為一個map包好了多個屬性-值對應關系
             * Expression.gt                  大于
             * Expression.ge                  大于等于
             * Expression.lt                  小于
             * Expression.le                  小于等于
             * Expression.between             表示某個字段位于2個數之間
             * Expression.like                  模糊查詢
             * Expression.in                  范圍查詢
             * Expression.eqProperty          用于比較2個屬性之間的值"field=field"
             * Expression.gtProperty          屬性1>屬性2
             * Expression.geProperty          屬性1>=屬性2
             * Expression.ltProperty          屬性1<屬性2
             * Expression.leProperty          屬性1<=屬性2
             * Expression.and                 and關系組合
             * Expression.or                  or關系組合
             * Expression.sql                 通過這個方法直接通過SQL語句限定查詢條件
             
    */
            
            criteria.add(Expression.eq(
    "name","Erica"));
            criteria.add(Expression.eq(
    "sex",new Integer(1)));
             
    /*(2)示例查詢
              * Example類實現了Criterion接口,同樣,它也可以用作Criteria的查詢條件。Example
              * 的作用是:根據已有對象,查找屬性與之相符的其他對象
              * 示例查詢最常用的場景是組合查詢。我們常常需要在界面上提供若干查詢選項,然后
              * 根據用戶的選擇返回符合條件的結果。
              * Example example = Example.create(cat)
              * excludeZeroes()           //exclude zero valued properties
              * excludeProperty("color")  //exclude the property named "color"
              * ignoreCase()              //perform case insensitive string comparisons
              * enableLike();             //use like for string comparisons
              * List results = session.createCriteria(Cat.class)
              * add(example)
              * list();
              
    */
             TUser exampleUser 
    = new TUser();
             exampleUser.setName(
    "Erica");
             criteria.add(Example.create(exampleUser));
             
    /*
              * (3)復合查詢
              * 在原有查詢的基礎上,針對TUser對象的addresses屬性構造了新的查詢過濾條件
              
    */
             Criteria addCriteria 
    = criteria.createCriteria("addresses");
             addCriteria.add(Expression.like(
    "address""%Shanghai%"));
             
    /*
              * (4)DetachedCriteria
              * 使Criteria脫離session實例獨立存在,這樣,我們就可以將某些通用的Criteria
              * 查詢條件進行抽離,每次使用時再與當前Session實例綁定以獲得更好的代碼重用效果
              
    */
             DetachedCriteria deCriteria 
    = DetachedCriteria.forClass(TUser.class);
             deCriteria.add(Expression.eq(
    "name""Erica"));
             deCriteria.add(Expression.eq(
    "sex",new Integer(1)));
             
             Criteria creiterias 
    = deCriteria.getExecutableCriteria(session);
             Iterator it 
    = criteria.list().iterator();
             
    /*
              * (5)高級特性
              * 通過criteria.setFirstResult/setMaxResults方法可以限制一次查詢返回的記錄范圍:
              
    */
             creiterias.setFirstResult(
    100);
             creiterias.setMaxResults(
    20);
             
    /*
              * 排序
              
    */
             creiterias.addOrder(Order.asc(
    "name"));
             
    /*
              * 分組與統計
              * 分組、統計表達式由Hibernate3新引入的Projections Class進行封裝
              * 按照age分組查詢
              * Projections.groupProperty()方法實際上是對SQL group by子句的封裝。同
              * 樣,我們可以通過Projections.avg(),rowCount(),count(),max(),min(),countDistinct()
              * 等方法實現查詢統計功能
              
    */
             creiterias.setProjection(Projections.groupProperty(
    "age"));
             
        }

    }

    posted on 2009-11-05 11:23 王永慶 閱讀(323) 評論(0)  編輯  收藏 所屬分類: HIBERNATE
    <2009年11月>
    25262728293031
    1234567
    891011121314
    15161718192021
    22232425262728
    293012345

    常用鏈接

    留言簿(1)

    隨筆分類

    隨筆檔案

    關注blogs

    搜索

    •  

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 19禁啪啪无遮挡免费网站| 在线播放免费播放av片| 久久免费观看国产精品88av| 成人免费AA片在线观看| 又爽又黄无遮挡高清免费视频| 亚洲AV无码国产在丝袜线观看| 亚洲AV无码一区二区三区牛牛| GOGOGO高清免费看韩国| 女人18毛片特级一级免费视频| 亚洲av成人综合网| 日本免费中文字幕| 精品日韩亚洲AV无码| 一区二区三区免费精品视频| 亚洲中文无码永久免费| 中文字幕无码亚洲欧洲日韩| 日韩免费无砖专区2020狼| 亚洲国色天香视频| 一级毛片在线观看免费| 国产亚洲精品影视在线产品| 亚洲日韩看片无码电影| 69式互添免费视频| 久久亚洲AV成人出白浆无码国产 | 午夜亚洲国产成人不卡在线| 亚洲最大的视频网站| 免费国产黄线在线观看| 亚洲成a人片在线观看中文app| 成人无码区免费A片视频WWW| 偷自拍亚洲视频在线观看99| 精品久久免费视频| 亚洲宅男精品一区在线观看| 亚洲免费视频网址| 久久久久亚洲国产AV麻豆| 成人免费网站在线观看| 色在线亚洲视频www| 亚洲成a人片在线播放| 人人爽人人爽人人片av免费| 亚洲AV无码一区二区三区国产| 你懂的网址免费国产| 国产亚洲综合色就色| 国产婷婷成人久久Av免费高清 | 亚洲精品乱码久久久久久中文字幕 |