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

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

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

    Java學習

    java,spring,structs,hibernate,jsf,ireport,jfreechart,jasperreport,tomcat,jboss -----本博客已經搬家了,新的地址是 http://www.javaly.cn 如果有對文章有任何疑問或者有任何不懂的地方,歡迎到www.javaly.cn (Java樂園)指出,我會盡力幫助解決。一起進步

     

    Criteria 使用指南(轉)

    經常用到Criteria,所以做一下總結

     net.sf.hibernate.Criteria這個接口代表對一個特定的持久化類的查詢。Session是用來制造Criteria實例的工廠。

     

    Criteria對SQL進行封裝,讓開發人員可以用物件的方式來對資料庫進行操作,例如下面的查詢User表格中的所有資料:
    Criteria criteria = session.createCriteria(User.class);
    // 查詢user所有欄位
    List users = criteria.list();
    Iterator iterator =  users.iterator();
    System.out.println("id \t name/age");
    while(iterator.hasNext()) {
        User user = (User) iterator.next();
        System.out.println(user.getId() +
                                   " \t " + user.getName() +
                                   "/" + user.getAge());           
    }

    Hibernate實際上使用以下的SQL來查詢資料庫:
    select this_.id as id0_, this_.name as name0_0_, this_.age as age0_0_ from user this_

    Criteria實際上只是個容器,如果想要設定查詢條件,則要使用add()方法加入Restrictions的條件限制,例如查詢age大于20且小于40的資料:
    Criteria criteria = session.createCriteria(User.class);
    criteria.add(Restrictions.gt("age", new Integer(20)));
    criteria.add(Restrictions.lt("age", new Integer(40)));
    List users = criteria.list();

    您也可以使用邏輯組合來進行查詢,例如結合age等于(eq)20或(or)age為空(isNull)的條件:
    Criteria criteria = session.createCriteria(User.class);
    criteria.add(Restrictions.or(
                       Restrictions.eq("age", new Integer(20)),
                       Restrictions.isNull("age")
                   ));
    List users = criteria.list();

    也可以使用sqlRestriction()方法來提供SQL語法作限定查詢,例如查詢name以cater開頭的資料:
    Criteria criteria = session.createCriteria(User.class);
    criteria.add(Restrictions.sqlRestriction("{alias}.name LIKE (?)", "cater%", Hibernate.STRING));
    List users = criteria.list();

    其中alias將被替換為與User類別相關的名稱,而?將被替換為cater%,也就是第二個參數所提供的值,在SQL撰寫時,不必再寫WHERE,如果有多個查詢條件,例如BETWEEN子句的查詢,則可以如下:
    Criteria criteria = session.createCriteria(User.class);
    Integer[] ages = {new Integer(20), new Integer(40)};
    Type[] types = {Hibernate.INTEGER, Hibernate.INTEGER};
    criteria.add(Restrictions.sqlRestriction("{alias}.age BETWEEN (?) AND (?)", ages, types));
    List users = criteria.list();

    Restrictions的幾個常用限定查詢方法如下表所示:
    方法 說明
    Restrictions.eq 等于
    Restrictions.allEq 使用Map,使用key/value進行多個等于的比對
    Restrictions.gt 大于 >
    Restrictions.ge 大于等于 >=
    Restrictions.lt 小于 <
    Restrictions.le 小于等于 <=
    Restrictions.between 對應SQL的BETWEEN子句
    Restrictions.like 對應SQL的LIKE子句
    Restrictions.in 對應SQL的in子句
    Restrictions.and and關系
    Restrictions.or or關系
    Restrictions.sqlRestriction SQL限定查詢

    Criteria 高級特性

     限定返回的記錄范圍

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

     Criteria criteria = session.createCriteria(User.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"));

     




    進行復合查詢示例:

     LogicalExpression subcriteria = Expression.or(Expression.ilike("name", searchtxt, MatchMode.ANYWHERE),
              Expression.ilike("description", searchtxt, MatchMode.ANYWHERE));
          criteria.add(subcriteria );


    參考:http://blog.csdn.net/abeetle/archive/2007/09/24/1798588.aspx

    posted on 2009-03-03 14:25 找個美女做老婆 閱讀(2358) 評論(0)  編輯  收藏


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     

    導航

    統計

    公告

    本blog已經搬到新家了, 新家:www.javaly.cn
     http://www.javaly.cn

    常用鏈接

    留言簿(6)

    隨筆檔案

    文章檔案

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲高清国产拍精品26U| 18gay台湾男同亚洲男同| 4hu四虎免费影院www| 亚洲AV无码国产在丝袜线观看| 亚洲一区二区三区免费观看| 亚洲国产欧洲综合997久久| 亚洲午夜日韩高清一区| 久久免费看黄a级毛片| 国产亚洲视频在线播放大全| 图图资源网亚洲综合网站| 女人与禽交视频免费看| 岛国岛国免费V片在线观看| 亚洲一区二区三区亚瑟| 国产亚洲精品看片在线观看| 91成人免费观看网站| 和老外3p爽粗大免费视频| 亚洲 欧洲 日韩 综合在线| 亚洲中文字幕无码专区| 67194成是人免费无码| 中文字幕无码免费久久9一区9| 亚洲三级高清免费| 亚洲AV无码精品无码麻豆| 国产jizzjizz视频全部免费| 4虎1515hh永久免费| 二区久久国产乱子伦免费精品| 亚洲午夜无码久久久久小说| 久久香蕉国产线看观看亚洲片| 国产成人精品高清免费| 国产大片免费网站不卡美女| 国产男女爽爽爽免费视频 | 日本黄色免费观看| 无码精品人妻一区二区三区免费看 | 亚洲一级Av无码毛片久久精品| 性做久久久久久久免费看| 无码国产精品一区二区免费vr| 美女免费视频一区二区三区| 自拍日韩亚洲一区在线| 亚洲综合婷婷久久| 亚洲国产精品无码久久久蜜芽 | 亚洲五月综合缴情婷婷| 亚洲精品福利视频|