<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                [TOC] # 簡介 對數據庫操作中,最常用的是select.使用hibernate如何select操作。 分為五種: 1導航對象圖檢索方式,根據已加載的對象導航到其它對象 2.OID檢索方式,按照對象的OID來檢索對象 3.HQL檢索方式,使用面向對象的HQL查詢語言 4.QBC檢索方式,使用QBC(Query by Criteria)API來檢索對象,這種API封裝了基于字符串形式的查詢語句,提供了更加面向對象的查詢接口 5.本地SQL檢索方式,使用本地數據庫的SQL查詢語句 # 導航對象圖檢索方式 ~~~ Customer c=session.get(Customer.class,2); c.getOrders().size() ~~~ 通過在hibernate中進行映射關系,在hibernate操作時,可以通過導航方式得到 其關聯的持久化對象信息。 # OID檢索方式 ~~~ Session.get(Customer.class,3); Session.load(Order.class,1); ~~~ Hibernate中通過get/load方法查詢指定的對象,要通過OID來查詢。 # HQL HQL是我們在hibernate中是常用的一種檢索方式。 HQL(Hibernate Query Language)提供更加豐富靈活、更為強大的查詢能力 因此Hibernate將HQL查詢方式立為官方推薦的標準查詢方式,HQL查詢在涵蓋Criteria查詢的所有功能的前提下,提供了類似標準SQL語 句的查詢方式,同時也提供了更加面向對象的封裝。完整的HQL語句形式如下: Select/update/delete…… from …… where …… group by …… having …… order by …… asc/desc 其中的update/delete為Hibernate3中所新添加的功能,可見HQL查詢非常類似于標準SQL查詢。 基本步驟: 1. 得到Session 2. 編寫HQL語句 3. 通過session.createQuery(hql)創建一個Query對象 4. 為Query對象設置條件參數 5. 執行list查詢所有,它反胃的是List集合 uniqueResut()返回一個查詢結果 ## 數據準備 ![](https://box.kancloud.cn/5c5b5deafcaea466041b1ce57337e1ed_674x545.png) ## 基本檢索 form 類名 ![](https://box.kancloud.cn/d2b78e1014339d4f9ea4339d67bc52f0_776x426.png) ## 排序檢索 ![](https://box.kancloud.cn/d3aec716af8197b23e65abcff29be50a_771x364.png) ## 條件檢索 ![](https://box.kancloud.cn/f56579a339f5badb0ff1e1299c60e06f_788x524.png) ## 分頁檢索 ![](https://box.kancloud.cn/7dc55a8c9a9902633cb34844ab1a260b_687x487.png) ## 分組統計檢索 分組 group by 統計 count max min avg sum ![](https://box.kancloud.cn/9ad6ad530613b04321cc9ee46d4a552e_760x509.png) ## 投影檢索 使用投影將部分屬性封裝到對象中 ![](https://box.kancloud.cn/954cfa7aedbf10fe2655c731aceed094_780x511.png) 注意: 我們要在po類中提供對應屬性的構造方法,也要有無參數構造 ## 命名檢索 我們可以將hql語句先定義出來,在使用時通過session.getNamedQuery(hqlName);得到一個Query,在執行. 問題:hql定義在什么位置? 1.如果你有hbm配置文件,那么當前的hql操作是對哪一個實體進行操作,就在哪一個 實體的配置文件中聲明。 ![](https://box.kancloud.cn/ff7c1e6029fd815ff233f33ef6ca6f83_687x263.png) # QBC QBC(query by criteria),它是一種更加面向對象的檢索方式。 QBC步驟: 1. 通過Session得到一個Criteria對象 session.createCriteria() 2. 設定條件 Criterion實例 它的獲取可以通過Restrictions類提供靜態。 Criteria的add方法用于添加查詢條件 3. 調用list進行查詢 criterfia.list. ## 基本檢索 ![](https://box.kancloud.cn/ed7f2c144ef957fe1d497bddd08e6d1b_759x436.png) ## 排序檢索 ![](https://box.kancloud.cn/c42639254853d95257d9dedcd3118e46_763x397.png) 注意在criteri.addOrder()方法的參數使用的Order是hibernate中的對象 ## 條件檢索 ![](https://box.kancloud.cn/de33c8581990d3b5d49e31d119e98bec_768x574.png) ## 分頁檢索 ![](https://box.kancloud.cn/dd27c0923234755ef5372d62368dbf65_768x429.png) ## 統計分組檢索 Count sum avg max min ![](https://box.kancloud.cn/417f14e1c733848179a4098e53ee3d66_773x223.png) ## 離線條件檢索 在多條件查詢的時候,需要在Web層封裝相應的參數到Criteria,而在Dao層才真正的去執行查詢數據庫的操作,所以需要在Web層創建Criteria并將其傳遞到Dao層,這個時候就不能在Web層使用session.createCriteria來創建Criteria,因為Criteria的一般創建都是使用session.createCriteria(),而session都是在Dao層才會創建的 ![](https://box.kancloud.cn/87bf07e275aef50738564423b4a2508d_756x420.png) # 本地SQL ![](https://box.kancloud.cn/9e74914690dac5d81f26adfca11dd450_794x620.png) ![](https://box.kancloud.cn/12ed466e7945eba6757889baddb66c1e_789x296.png) # 多表操作 SQL多表操作 1.交叉連接 CROSS JOIN 會產生迪卡爾積 SELECT * FROM t_customer CROSS JOIN t_order; 2.內連接 INNER JOIN ON SELECT * FROM t_customer AS c INNER JOIN t_order AS o ON c.id=o.c_customer_id; 使用內連接它只能將有關聯的數據得到。 隱式內連接 使用 "逗號"將表分開,使用WHERE來消除迪卡爾積 SELECT * FROM t_customer AS c ,t_order o WHERE c.id=o.c_customer_id; 3.外連接 左外LEFT OUTER JOIN 右外RIGHT OUTER JOIN OUTER可以省略 SELECT * FROM t_customer c LEFT OUTER JOIN t_order o ON c.id=o.c_customer_id; # HQL多表操作 Hql多表操作分類: 1. 1. 交叉連接 2. 2. 內連接 * a) 顯示內連接 * b) 隱式內連接 * c) 迫切內連接 * 3. 外連接 左外連接 迫切左外連接 右外連接 注意:在hibernate中有迫切連接的概念,而sql中沒有。 ## 內連接 顯示內連接 顯示內連接使用的是inner join with ![](https://box.kancloud.cn/5b8fa062a3f8abd436045967475a2e49_771x503.png) ## 隱式內連接 隱式內連接也我們在sql中操作不一樣,它是通過”.”運算符來關聯 ![](https://box.kancloud.cn/fbd44206b33d2aa1caaefa3c94b5619e_737x357.png) ## 迫切內連接 迫切內連接得到的結果是直接封裝到PO類中,而內連接得到的是Object[]數組,數組中封裝的是PO類對象。 ![](https://box.kancloud.cn/f432cc64ced26d6e2491a929171f71a0_792x457.png) ## 外連接 ![](https://box.kancloud.cn/4450e4c8deb8e84059bad8a628242251_782x528.png)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看