<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
    主站蜘蛛池模板: 成年网在线观看免费观看网址| 日韩一卡2卡3卡4卡新区亚洲| 久久亚洲sm情趣捆绑调教| a级成人毛片免费视频高清| 亚洲综合另类小说色区| 最近免费中文字幕中文高清| 丁香五月亚洲综合深深爱| 中文字幕无码免费久久9一区9| 亚洲国产精品无码专区| 久久国产乱子精品免费女 | 国产大陆亚洲精品国产| 亚洲AV蜜桃永久无码精品| 一级免费黄色毛片| 国产亚洲精AA在线观看SEE | 国产精品一区二区三区免费 | 亚洲综合综合在线| 成人免费毛片内射美女APP| 亚洲AV无码专区在线电影成人| 日韩激情无码免费毛片| 一级特黄a免费大片| 亚洲精品无码永久在线观看你懂的| 精品亚洲永久免费精品| 亚洲av无码片在线观看| 国产老女人精品免费视频 | 在线永久看片免费的视频| 亚洲日韩国产AV无码无码精品| 亚洲av午夜精品一区二区三区| 精品多毛少妇人妻AV免费久久| 亚洲精品视频在线| 日韩免费观看一级毛片看看| 精品久久久久久无码免费| 久久久久亚洲AV无码专区首JN| 大学生美女毛片免费视频| 国产免费内射又粗又爽密桃视频| 久久99国产亚洲精品观看| 韩国日本好看电影免费看| 国产色无码精品视频免费| 亚洲综合av一区二区三区不卡| 亚洲乱码国产一区网址| 欧洲乱码伦视频免费| 一级女人18片毛片免费视频|