<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樂園)指出,我會盡力幫助解決。一起進步

     

    Hibernate 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();

    返回list是 criteria.list(); 返回單一的數據是criteria.uniqueResult().注意的是,用criteria.uniqueResult()時,一定要確保數據庫里面只有一條數據滿足要求,不然就會throws not unique異常。
    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限定查詢

    posted on 2008-07-18 13:38 找個美女做老婆 閱讀(3692) 評論(0)  編輯  收藏


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


    網站導航:
     

    導航

    統計

    公告

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

    常用鏈接

    留言簿(6)

    隨筆檔案

    文章檔案

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 一个人看的www视频免费在线观看| 亚洲乱码中文字幕小综合| 边摸边吃奶边做爽免费视频网站| 毛色毛片免费观看| 亚洲国产成人久久精品软件| 国产国拍亚洲精品mv在线观看| 无遮挡呻吟娇喘视频免费播放| 国产传媒在线观看视频免费观看| 亚洲Av永久无码精品黑人| 国产免费观看视频| 免费又黄又爽又猛大片午夜| 亚洲自偷自偷在线制服| 永久在线观看免费视频| 久久亚洲AV成人无码国产| 最近的中文字幕大全免费8| 亚洲日本国产乱码va在线观看| 无码精品A∨在线观看免费| 在线综合亚洲欧洲综合网站 | 四虎影视在线永久免费观看| 国产精品无码亚洲一区二区三区| 亚洲国产91精品无码专区| 一级毛片**免费看试看20分钟| 国产亚洲成AV人片在线观黄桃| 久久99精品国产免费观看| 亚洲国产精品久久网午夜| 成年性午夜免费视频网站不卡| 色婷婷亚洲一区二区三区| 亚洲日韩精品A∨片无码| 日本h在线精品免费观看| 亚洲AV成人一区二区三区在线看| 免费a级毛片无码av| 免费看无码特级毛片| 亚洲免费网站在线观看| 免费夜色污私人影院在线观看| 成人网站免费看黄A站视频| 亚洲午夜精品在线| 亚洲综合精品网站在线观看| 18禁美女黄网站色大片免费观看| 青草久久精品亚洲综合专区| 亚洲A∨无码一区二区三区| 日本牲交大片免费观看|