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

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

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

    Java學(xué)習(xí)

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

     

    Hibernate Criteria 關(guān)聯(lián)查詢

    Criteria對(duì)SQL進(jìn)行封裝,讓開發(fā)人員可以用物件的方式來(lái)對(duì)資料庫(kù)進(jìn)行操作,例如下面的查詢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實(shí)際上使用以下的SQL來(lái)查詢資料庫(kù):
    select this_.id as id0_, this_.name as name0_0_, this_.age as age0_0_ from user this_

    Criteria實(shí)際上只是個(gè)容器,如果想要設(shè)定查詢條件,則要使用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();

    您也可以使用邏輯組合來(lái)進(jìn)行查詢,例如結(jié)合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()方法來(lái)提供SQL語(yǔ)法作限定查詢,例如查詢name以cater開頭的資料:
    Criteria criteria = session.createCriteria(User.class);
    criteria.add(Restrictions.sqlRestriction("{alias}.name LIKE (?)", "cater%", Hibernate.STRING));
    List users = criteria.list();

    其中alias將被替換為與User類別相關(guān)的名稱,而?將被替換為cater%,也就是第二個(gè)參數(shù)所提供的值,在SQL撰寫時(shí),不必再寫WHERE,如果有多個(gè)查詢條件,例如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(); 返回單一的數(shù)據(jù)是criteria.uniqueResult().注意的是,用criteria.uniqueResult()時(shí),一定要確保數(shù)據(jù)庫(kù)里面只有一條數(shù)據(jù)滿足要求,不然就會(huì)throws not unique異常。
    Restrictions的幾個(gè)常用限定查詢方法如下表所示:
    方法 說(shuō)明
    Restrictions.eq 等於
    Restrictions.allEq 使用Map,使用key/value進(jìn)行多個(gè)等於的比對(duì)
    Restrictions.gt 大於 >
    Restrictions.ge 大於等於 >=
    Restrictions.lt 小於 <
    Restrictions.le 小於等於 <=
    Restrictions.between 對(duì)應(yīng)SQL的BETWEEN子句
    Restrictions.like 對(duì)應(yīng)SQL的LIKE子句
    Restrictions.in 對(duì)應(yīng)SQL的in子句
    Restrictions.and and關(guān)係
    Restrictions.or or關(guān)係
    Restrictions.sqlRestriction SQL限定查詢

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


    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     

    導(dǎo)航

    統(tǒng)計(jì)

    公告

    本blog已經(jīng)搬到新家了, 新家:www.javaly.cn
     http://www.javaly.cn

    常用鏈接

    留言簿(6)

    隨筆檔案

    文章檔案

    搜索

    最新評(píng)論

    閱讀排行榜

    評(píng)論排行榜

    主站蜘蛛池模板: 免费看国产曰批40分钟| 国产人在线成免费视频| 亚洲国产精品久久66| 亚洲天堂免费在线视频| 亚洲?v无码国产在丝袜线观看| 亚洲精品无码日韩国产不卡av| 毛片免费视频在线观看| 久久乐国产综合亚洲精品| 99精品全国免费观看视频 | 女人18毛片a级毛片免费视频| 亚洲三级在线播放| 国产精品视频永久免费播放| 亚洲中文字幕AV每天更新| 全免费a级毛片免费**视频| 精品国产亚洲AV麻豆| 亚洲国产天堂久久久久久| 成人精品视频99在线观看免费| 国产亚洲成人在线播放va| 国产成人精品免费久久久久| 亚洲欧洲日产国码二区首页| 国产精品免费观看久久| 极品美女一级毛片免费| 色久悠悠婷婷综合在线亚洲| 亚洲视频在线观看免费| 亚洲午夜无码毛片av久久京东热| 日本免费网站在线观看| 国产在线观看免费av站| 亚洲福利电影在线观看| 国产禁女女网站免费看| 日韩电影免费在线观看网站| 亚洲精品91在线| 国产一级淫片免费播放电影| 东北美女野外bbwbbw免费| 亚洲一区二区三区精品视频| 免费在线观看a级毛片| 亚洲不卡1卡2卡三卡2021麻豆| 在线观看91精品国产不卡免费| 国产免费A∨在线播放| 亚洲一级视频在线观看| 亚洲国产成人精品无码久久久久久综合 | 免费人成激情视频在线观看冫|