<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支持條件查詢。
    1、支持字符串方式參數傳遞查詢:
    例子:
    1List students = session.createQuery("select s.id,s.name from Student s where s.name like '%1' ").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:由于,涉及到多個屬性查詢,所以返回的是Object數組類型。

    2、支持類似于PrepareStatement方式的?傳遞參數查詢
    例子:
    1List students = session.createQuery("select s.id,s.name from Student s where s.name like ? ")
    2                                                .setParameter(0"%1%").list();
    3            for (Iterator iter=students.iterator(); iter.hasNext();) {
    4                Object[] o = (Object[])iter.next();
    5                System.out.println(o[0]+","+o[1]);
    6            }

    PS:要設置參數從0開始,見第2行。

    3、去變量方式參數傳遞
    例子:
    1List students = session.createQuery("select s.id,s.name from Student s where s.name like :goodname ")
    2                                                .setParameter("goodname""%1%").list();
    3            for (Iterator iter=students.iterator(); iter.hasNext();) {
    4                Object[] o = (Object[])iter.next();
    5                System.out.println(o[0]+","+o[1]);
    6            }
    PS:這個跟2中的相似,只是多了參數可以歸為一類。

    4、支持多參數傳遞
    例子:
    1List students = session.createQuery("select s.id, s.name from Student s where s.id in(:myids)")
    2            .setParameterList("myids"new Object[]{12345,32,13,14})
    3                .list();
    4            for (Iterator iter=students.iterator(); iter.hasNext();) {
    5                Object[] o = (Object[])iter.next();
    6                System.out.println(o[0]+","+o[1]);
    7            }
    PS:注意調用方法是setParameterList。

    5、調用數據庫里面的函數
    例子:

    1List students = session.createQuery("select s.id, s.name from Student s where date_format(s.createTime, '%Y-%m')=?")
    2            .setParameter(0"2008-10")
    3                .list();
    4            for (Iterator iter=students.iterator(); iter.hasNext();) {
    5                Object[] o = (Object[])iter.next();
    6                System.out.println(o[0]+","+o[1]);
    7            }
    PS:數據庫函數date_format。

    6、直接支持sql查詢
    例子:
    1List students = session.createSQLQuery("select *from t_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:只需要調用session里面的createSQLQuery方法即可。

    7、進行導航查詢
    例子:

    1List students = session.createQuery("select s.name from Student s where s.classes.name like '%1%'").list();
    2            for (Iterator iter=students.iterator(); iter.hasNext();) {
    3                String s = (String)iter.next();
    4                System.out.println(s);
    5            }
    PS:這種查詢很方便。

    8、分頁查詢
    例子:
    1List students = session.createQuery("from Student").setFirstResult(0).setMaxResults(3).list();
    2            for (Iterator iter=students.iterator(); iter.hasNext();) {
    3                Student student = (Student)iter.next();
    4                System.out.println(student.getName());
    5            }

    PS:這是很簡單的分頁查詢,分頁查詢實現比這個復雜多了,分頁查詢采用的相當于數據庫里面的 limit ,來限制一次查詢顯示的條數。

    注:還有一些其他就不一一列舉了,在hibernate的使用中HQL查詢語言如果用得好,會給工作帶來比較高的效率,比較重要,而且還有一個查詢效率的問題,這涉及到緩存等方面,以后會更新這方面的文章。



    -------------------------------------------------------------------------------------------------
    PS:本博客文章,如果沒有注明是有“轉”字樣,屬于本人原創。如果需要轉載,務必注明作者文章的詳細出處地址,否則不允許轉載,多謝合作!
    posted on 2008-10-31 20:46 apple0668 閱讀(1466) 評論(0)  編輯  收藏 所屬分類: hibernate
    主站蜘蛛池模板: 91精品全国免费观看含羞草| 成人妇女免费播放久久久| 性无码免费一区二区三区在线| 亚洲午夜福利精品无码| 青草久久精品亚洲综合专区| 日本不卡免费新一二三区| 亚洲精品国产精品| 免费99热在线观看| 成人在线免费视频| 国产午夜亚洲精品午夜鲁丝片 | 亚洲va乱码一区二区三区| 91成人免费观看网站| 最新亚洲春色Av无码专区| 国产精品深夜福利免费观看| 国产精品亚洲一区二区三区久久| 亚洲av无码乱码在线观看野外 | 免费日本一区二区| 亚洲精品国产成人| 成人毛片免费在线观看| 免费播放美女一级毛片| 精品亚洲一区二区三区在线观看| 两个人日本免费完整版在线观看1| 久久精品国产亚洲夜色AV网站| 在线观看成人免费视频不卡| 亚洲国产成人无码AV在线| 亚洲色偷偷综合亚洲AV伊人| 久久爰www免费人成| 亚洲最大福利视频| 亚洲精品久久久www| 午夜理伦剧场免费| 亚洲欧洲专线一区| 亚洲一区爱区精品无码| 99re在线这里只有精品免费| 亚洲免费福利在线视频| 中文字幕久久亚洲一区| 114一级毛片免费| 一级毛片完整版免费播放一区| 亚洲影院在线观看| 国产一区二区视频免费| 久久精品国产大片免费观看| 亚洲AV成人片无码网站|