<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

    搜索

    •  

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲男人av香蕉爽爽爽爽| 18禁成年无码免费网站无遮挡| 亚洲高清国产拍精品青青草原| 亚洲AV噜噜一区二区三区| 免费无码一区二区三区蜜桃大| 在线亚洲午夜片AV大片| 性xxxx视频播放免费| 亚洲av永久中文无码精品综合 | 又粗又长又爽又长黄免费视频 | 亚洲AV无码专区电影在线观看| 国产免费AV片在线观看| 亚洲AV无码成人精品区在线观看| 久操视频在线免费观看| 亚洲精品视频观看| 国产香蕉九九久久精品免费| 亚洲AV无码AV吞精久久| 亚洲一级特黄无码片| 日韩精品无码免费专区网站 | 国产免费小视频在线观看| 免费人人潮人人爽一区二区| 红杏亚洲影院一区二区三区| 国产免费爽爽视频在线观看| 亚洲人成7777影视在线观看| 免费国产成人午夜私人影视| 久久久WWW成人免费精品| 99人中文字幕亚洲区| 成年性生交大片免费看| 一级毛片aaaaaa视频免费看| 亚洲精品免费视频| 午夜一级免费视频| 美女被免费网站91色| 91午夜精品亚洲一区二区三区| 国产精品深夜福利免费观看 | 青青草a免费线观a| 少妇亚洲免费精品| 亚洲美免无码中文字幕在线| 国产一级淫片a免费播放口之| 免费观看久久精彩视频| 亚洲狠狠婷婷综合久久| 国产亚洲一区二区手机在线观看| 四虎精品视频在线永久免费观看|