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

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

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

    Kela's Blog

                前面的路很坎坷,但畢竟是條路.也許走過這一段就會發現,走過去就是夢想中的地方.因此堅持成為此刻唯一能做且必須去做的事情.
    posts - 9, comments - 27, trackbacks - 0, articles - 15

    kela的筆記 ORM產品 ---- hibernate(4)

    Posted on 2005-12-06 13:31 Kela 閱讀(329) 評論(0)  編輯  收藏 所屬分類: 我的筆記(Hibernate)

    使用Criteria Query 進行數據查詢

    Criteria Query 是一種通過對象化的查詢,并將數據查詢條件封裝為一個對象。
    簡單來看,可以看作是傳統SQL的對象化表示,如:
       criteria = session.createCriteria(KelaStudent.class);
       criteria.add(Expression.eq("stuName", "鄧立強"));
    這相當于SQL的 " select * from KELA_STUDENT where StuName = '鄧立強' "
     
    這種方式的特點是比價符合Java程序員的編碼習慣,非常的容易上手。

    更多的使用方法和參數,參考Hibernate文檔和深入淺出Hibernate等資料。

    示例一:StudentCriteriaQuery.java 一個基本 Criteria Query 的查詢

    /**
     * StudentCriteriaQueryl.java
     *
     * 基于 Criteria Query 的對象化查詢
     */
    package com.kela.hb.model;

    import java.util.Iterator;
    import java.util.List;

    import org.hibernate.Criteria;
    import org.hibernate.HibernateException;
    import org.hibernate.Session;
    import org.hibernate.Transaction;
    import org.hibernate.criterion.Example;
    import org.hibernate.criterion.Expression;

    import com.kela.hb.pojo.KelaStudent;
    import com.kela.hb.util.HibernateUtil;

    /**
     * @author kangfeng(kela.kf@gmail.com)
     *
     */
    public class StudentCriteriaQuery {
     
      /*
       * 帶有表達式的 Criteria 查詢
       */
       public void exampleSelect_1() {
          Session session;
          Criteria criteria;
          try {
             session = HibernateUtil.currentSession();
             criteria = session.createCriteria(KelaStudent.class);
       
              //關于Expression提供的對應查詢限定機制, 可在Hibernate的文檔中獲得詳細資料
              //如果沒有一下的查詢條件則查詢所有的數據庫 KELA_STUDENT 的紀錄
       
              //查詢數據庫表 KELA_STUDENT 中 StuName = '鄧立強'的紀錄,
              //查詢條件中的stuName對應com.kela.hb.pojo.KelaStudent的屬性stuName
              //criteria.add(Expression.eq("stuName", "鄧立強"));
       
              //查詢年齡大于25歲的學生紀錄
              criteria.add(Expression.gt("stuAge", new Integer(25)));
      
               //如果同時出現幾個限定條件,如 StuName = '鄧立強'; stuAge > 25 則取交集
       
               KelaStudent kelaStudent = new KelaStudent();
       
               List list = criteria.list();
               Iterator it = list.iterator();
               while(it.hasNext()) {
                    kelaStudent = (KelaStudent)it.next();
                    System.out.print("  編號:" + kelaStudent.getStuID());
                    System.out.print("  名稱:" + kelaStudent.getStuName());
                    System.out.print("  性別:" + kelaStudent.getStuSex());
                    System.out.print("  年齡:" + kelaStudent.getStuAge());
                    System.out.print("  地址:" + kelaStudent.getStuAddress());
                    System.out.println();
               }
           } catch (HibernateException e) {
                System.out.println("[提示]: 查詢沒有成功," + e.getMessage());
           } finally {
                HibernateUtil.closeSession();
         }
      }
     
      /*
       * 示例查詢,根據已有的對象,查詢屬性與之相符的其它對象
       */
      public List exampleSelect_2(KelaStudent kelaStudent) {
          Session session;
          Criteria criteria;
          try {
              session = HibernateUtil.currentSession();
              criteria = session.createCriteria(KelaStudent.class);
              criteria.add(Example.create(kelaStudent));
              return criteria.list();
          } catch (HibernateException he) {
             System.out.println("[提示]: 查詢發生錯誤," + he.getMessage());
             return null;
          } finally {
             HibernateUtil.closeSession();
          }
      }
     
      /*
       * 調用示例查詢,并打印結果
       * 這種查詢并不常用,但是在組合查詢中非常的有用途。
       * 比如要查詢的條件有多個,但不能確定的時候,可以按照下面的例子使用,直接設定查詢的條件,
       * 然 后將對象傳入即可查詢。
       */
       public void exampleSelect_3() {
          KelaStudent kelaStudent = new KelaStudent();
          //在這里可以設置多個條件,如年齡,地址等
          kelaStudent.setStuName("鄧立強");
      
         List list = exampleSelect_2(kelaStudent);
         Iterator it = list.iterator();
         while(it.hasNext()) {
             kelaStudent = (KelaStudent)it.next();
             System.out.print("  編號:" + kelaStudent.getStuID());
             System.out.print("  名稱:" + kelaStudent.getStuName());
             System.out.print("  性別:" + kelaStudent.getStuSex());
             System.out.print("  年齡:" + kelaStudent.getStuAge());
             System.out.print("  地址:" + kelaStudent.getStuAddress());
             System.out.println();
         }
      
       }
     
       public static void main(String[] args) {
              StudentCriteriaQuery scq = new StudentCriteriaQuery();
      
              //查詢年齡大于25的學生紀錄
              scq.exampleSelect_1();

              //按照給定的條件進行查詢,這里為 name = '鄧立強'
              //scq.exampleSelect_3();
       }  

    }

    分享到:
    主站蜘蛛池模板: 亚洲免费视频在线观看| 亚洲18在线天美| 中文字幕精品亚洲无线码一区应用| 国产成人在线观看免费网站| 天天干在线免费视频| 午夜视频免费成人| 成人啪精品视频免费网站| 成**人免费一级毛片| 波多野结衣久久高清免费| 成人毛片免费在线观看| 日本高清免费网站| 四虎在线播放免费永久视频| 免费人成视频在线观看不卡| 午夜亚洲国产成人不卡在线| 亚洲性日韩精品一区二区三区 | 在线播放免费人成毛片乱码| 最近免费字幕中文大全| 免费av片在线观看网站| 久久成人无码国产免费播放| 日韩插啊免费视频在线观看| 免费在线观看h片| 成人免费看黄20分钟| 又粗又大又猛又爽免费视频| 国产成人亚洲精品91专区手机| 国产成人A人亚洲精品无码| 久久久久久亚洲精品成人| 亚洲av成人综合网| 国产成人精品日本亚洲语音| 国产精品免费αv视频| 人妻丰满熟妇无码区免费 | eeuss影院www天堂免费| 成全高清在线观看免费| 国产免费的野战视频| 国产精品成人四虎免费视频| 亚洲乱码中文字幕综合234 | 国产又大又粗又硬又长免费| 中文字幕亚洲日韩无线码| 日产亚洲一区二区三区| 亚洲欧美综合精品成人导航| 国产精品偷伦视频免费观看了| 久久国产乱子伦免费精品|