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

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

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

    隨筆-61  評論-159  文章-0  trackbacks-0

    hibernate查詢語言hql

    在hql中關(guān)鍵字不區(qū)分大小寫,但是屬性和類名區(qū)分大小寫

    1、簡單屬性查詢
    1>如果對單一屬性進(jìn)行查詢,返回結(jié)果集屬性列表,元素類型和實體類中相應(yīng)的屬性類型一致
     

    例子:

    1List students = session.createQuery("select name from Student").list();
    2            for (Iterator iter=students.iterator(); iter.hasNext();) {
    3                String name = (String)iter.next();
    4                System.out.println("student.name="+name);
    5            }

    由于第1行中的name是String字符串類型,所以第三行對應(yīng)的也要是字符串類型。其他的字段也要保持一致。

    2>如果是對多個屬性進(jìn)行查詢,返回的是Object數(shù)組類型,所以其元素類型也要與相對應(yīng)的屬性類型保持一致。

    例子:

    1List students = session.createQuery("select id,name from Student").list();
    2   for (Iterator iter=students.iterator(); iter.hasNext();) {
    3    Object[] o = (Object[])iter.next();
    4    System.out.println(o[0]+","+o[1]);
    5   }


    PS:如果想返回的類型與原來的對象類型保持一致的話,就例子而言就是Student類型,首先先包住Student的POJO類中有Student的兩個id,name參數(shù)的構(gòu)造方法。

    1List students = session.createQuery("select new Student(id,name) from Student").list();
    2            for (Iterator iter=students.iterator(); iter.hasNext();) {
    3                Student s = (Student)iter.next();
    4                System.out.println(s.getId()+","+s.getName());
    5            }

    注:第一行中的new Student(id,name)很重要,決定返回是Student類型,這樣更對象化,其他第3行也一致。

    2、實體查詢
    實體查詢中,涉及到對對象的查詢,對于多個記錄,就一般用Querry接口里面的list()和iterate()方法來迭代。
    兩種方法的區(qū)別是:
                                      一、list(),對條件符合的數(shù)據(jù)全部一次加載,只發(fā)出一條語句。
                                      二、iterate(),先把符合條件的id全部查詢出來,然后,再根據(jù)里面id數(shù)量,發(fā)出相應(yīng)的sql語句,就是有N條記錄就查詢N+1次。
    PS:相對而已,lsit()加載了直接放在一級緩存里面,就是Session里面,從來不使用Session
                                iterate()一開始加載,先從一級緩存里面加載,如果有就只查詢一次,如果沒有就先把符合條件的id全部查詢出來,然后,再根據(jù)里面id數(shù)量,發(fā)出相應(yīng)的sql語句,就是有N條記錄就查詢N+1次。
    例子:

    1List students = session.createQuery("from Student as s").list();
    2            for (Iterator iter=students.iterator(); iter.hasNext();) {
    3                Student s = (Student)iter.next();
    4                System.out.println("student.name="+s.getName());
    5            }

    注:只發(fā)出一條語句。

    1Iterator students = session.createQuery("from Student").iterate();
    2            while(students.hasNext())
    3            {
    4                Student s = (Student)students.next();
    5                System.out.println("s.name="+s.getName());
    6                
    7            }

    注:發(fā)出N+1條語句,因為一級緩存里面沒有相應(yīng)的記錄。

     1List students = session.createQuery("from Student").list();
     2                for (Iterator iter=students.iterator(); iter.hasNext();) {
     3                    Student s = (Student)iter.next();
     4                    System.out.println("student.name="+s.getName());
     5                }

     6                System.out.println("---------------------------------------------------");
     7                Iterator it = session.createQuery("from Student").iterate();
     8                while(it.hasNext())
     9                {
    10                    Student s = (Student)it.next();
    11                    System.out.println("s.name="+s.getName());
    12                    
    13                }

    注:只發(fā)出兩條查詢語句,因為list()已經(jīng)把數(shù)據(jù)存在一級緩存里面,對應(yīng)iterate()先從一級緩存里面查找,所以總共只發(fā)出兩條查詢語句。




    -------------------------------------------------------------------------------------------------
    PS:本博客文章,如果沒有注明是有“轉(zhuǎn)”字樣,屬于本人原創(chuàng)。如果需要轉(zhuǎn)載,務(wù)必注明作者文章的詳細(xì)出處地址,否則不允許轉(zhuǎn)載,多謝合作!
    posted on 2008-10-28 23:56 apple0668 閱讀(811) 評論(0)  編輯  收藏 所屬分類: hibernate
    主站蜘蛛池模板: 污污免费在线观看| 国产偷国产偷亚洲清高动态图| 久久亚洲AV成人无码国产电影| 久久精品国产精品亚洲人人 | 无码日韩精品一区二区免费| 免费观看四虎精品成人| 亚洲国产福利精品一区二区| 亚洲中文字幕久久精品无码喷水| 国产香蕉九九久久精品免费| 免费无码又爽又刺激一高潮| 色多多免费视频观看区一区| 亚洲高清免费在线观看| 亚洲gv猛男gv无码男同短文| 国产一级淫片a视频免费观看| 免费精品国产日韩热久久| 日本免费高清视频| 欧洲人成在线免费| 伊人久久免费视频| 日本免费人成视频在线观看| 91在线免费观看| 免费萌白酱国产一区二区三区 | 波多野结衣一区二区免费视频| 女人张开腿等男人桶免费视频| 97视频免费在线| 青青青青青青久久久免费观看| 在线观看特色大片免费视频| 无码少妇一区二区浪潮免费| 国产美女a做受大片免费| 性做久久久久免费观看| 免费人成激情视频| 亚洲尤码不卡AV麻豆| 色播亚洲视频在线观看| 亚洲三级在线播放| 免费看黄网站在线看| 日本黄色动图免费在线观看| 国产免费不卡v片在线观看| 免费在线观看一级毛片| 亚洲精品蜜桃久久久久久| 亚洲男人电影天堂| 无遮挡呻吟娇喘视频免费播放| 久久精品国产这里是免费|