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

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

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

    隨筆-7  評論-24  文章-102  trackbacks-0


    1、查詢返回

    ● 查詢語句可以返回多個對象或屬性,存放在 Object[] 隊列中。

    ● 將查詢結果的所有屬性都存放在一個 List 對象中:
      select new list(xxx.xxxx,xx.xx) .....
    這里的 new list 是實例化 java.util.ArraryList 對象。

    ● 將查詢結果封裝成一個安全的 Java 對象
      select new EncCustomer(xx.xxx, xx.xx)....

    ● 將查詢結果封裝成 Map 對象(利用別名)
      select new map(xx.xxx as aaaa, xx.xxxx as bb) .....
    .....
      Map obj = (Map)list.get(i);
      obj.get("aaaa"); 
      obj.get("bb");


    ● distinct 刪除重復數據



    2、參數綁定機制


      q.setParameter("name", name);
      Hibernate 能根據參數值的 Java 類型推斷出對應的映射類型,對于日期類型,如 java.util.Date 類型,會對應多種映射類型,這時候需要顯示指定。
      q.setParameter("date", Hibernate.DATE);


      q.setProperties(obj);
      根據 obj 的屬性名對應 HQL 語義中定義的命名參數進行查詢。



    3、HQL 子查詢
       用于子查詢的集合函數 size()、minIndex()、maxIndex()、minElement()、maxElement() 和 elements()。



    4、集合過濾
      對于某持久化對象的 items 屬性內元素性能優化(過濾集合內數據、排序等)。

      Session.createFilter(object, string);
      返回是 Query 類型
      參數 object 是持久化對象的集合。
      參數 string 是 HQL 的過濾條件

    //過濾 prod 的集合 items
    List items = session.createFilter(prod.getItems(),
     "this.unitCost<100 order by this.ListPrice desc").List();
    //綁定過濾的結果 itmes 到屬性
    prod.setItems(items);



    5、條件查詢 QBC

    5-1、Restrictions 過濾結果集


    5-2、結果集排序
     .addOrder(Order.asc("name"))
     .addOrder(Order.desc("category"))
     .list();


    5-3、createCriteria() 關聯查詢
      List list = sess.createCriteria(Product.class)
     .add(Restrictions.like("name", "%o%"))
     .createCriteria("items")  
     .add(Restrictions.ge("listPrice", new Float(100.0))
     .list();
    //返回一個新的 Criteria 實例,該實例引用 items 集合中的元素,并且為該集合元素增加了元素屬性 listPrice 大于等于 100.0 的過濾條件。

    或者使用別名
     .createAlias("items", "ite")
     .add(Restrictions.ge("ite.listPrice", new Float(100.0))


    5-4、設置加載策略
     .setFetchMode("items", FetchMode.EAGER)
     .list();

      DEFAULT:默認
      EAGER/JOIN:強制立即加載
      LAZY/SELECT:強制延遲加載


    5-5、聚合和分組  org.hibernate.criterion.Projections

     .setProjection(Projections.rowCount())
     .uniqueResult();

     .add(Projections.groupProperty("imagePath"))
     .list();


    5-6、離線與子查詢

      離線查詢方式在 Session 范圍之外定義一個離線查詢,然后使用任意的 Session 執行查詢。該方法主要通過 org.hibernate.criterion.DetachedCriteria 類實現。



    6、Native SQL 查詢

       應用程序中使用與數據庫相關的 SQL 查詢語句

    6-1、Native SQL 應用程序接口

      主要使用 SQLQuery.addEntity() 實現返回結果為實體的查詢,SQLQuery.addScalar() 則返回標量值。
      SQLQuery.addJoin(String alias, String path) 用于將映射對象所關聯的實體或集合對應起來。

     
    6-2、命名查詢
      sess.getNamedQuery(string);

      在 xml 文件中使用 <! [CDATA []] > 元表示其中的內容是區分其他元素定義的純文本。例如: < 符號。


    6-3、使用存儲過程
      Hibernate 3.0 以上的版本已經支持和利用存儲過程來進行查詢,存儲過程返回的參數是標量與實體,這里可以利用返回類型的定義將存儲過程返回的參數映射到對象的屬性中。

    <sql-query name="productQuery" callable="true">
      <return alias="prod" class="petstore.domain.Product">
        <return-property name="productId" column="PRODUCTID" />
        <return-property name="description" column="DESCRIPTION" />
        <return-property name="name" column="NAME" />
      </return>
      {? = call getProduct(?)}
    </sql-query>

    List list = query.list();

     

    posted on 2009-04-12 02:11 黃小二 閱讀(455) 評論(0)  編輯  收藏 所屬分類: S/S2SHJ2EEJ2SE
    主站蜘蛛池模板: 亚洲精品成人无限看| 亚洲人成无码网站| 亚洲人成网站18禁止| 最近免费中文字幕大全视频| 亚洲自偷自偷在线成人网站传媒| 91在线视频免费看| 亚洲黄页网在线观看| 老司机永久免费网站在线观看| 在线播放亚洲精品| 亚洲精品国产高清嫩草影院| 国产福利电影一区二区三区,免费久久久久久久精 | 亚洲激情视频在线观看| 污污网站18禁在线永久免费观看| 亚洲国产高清视频| 青娱分类视频精品免费2| 亚洲乱色熟女一区二区三区蜜臀| 成人网站免费观看| 国产亚洲漂亮白嫩美女在线| 亚洲精品国产精品乱码不卡| 久久精品无码精品免费专区| 91天堂素人精品系列全集亚洲 | 日韩精品亚洲专区在线影视| 亚洲综合在线另类色区奇米 | 午夜无遮挡羞羞漫画免费| 亚洲爆乳少妇无码激情| 久久久久亚洲精品男人的天堂| 久久成人免费电影| 狠狠色香婷婷久久亚洲精品| 免费A级毛片无码久久版| 免费看少妇高潮成人片| 在线综合亚洲中文精品| 亚洲精品线路一在线观看| 欧洲人免费视频网站在线| 亚洲综合小说另类图片动图| 亚洲麻豆精品国偷自产在线91| 6080午夜一级毛片免费看 | 亚洲精品人成网线在线播放va| 亚洲人成影院在线观看| 97在线视频免费公开观看| 欧洲亚洲综合一区二区三区 | 美女网站在线观看视频免费的 |