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

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

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

    posts - 0, comments - 77, trackbacks - 0, articles - 356
      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

    有關Criteria

    Posted on 2007-08-09 13:57 semovy 閱讀(1275) 評論(0)  編輯  收藏 所屬分類: Hibernate

    Criteria:

    Criteria criteria = session.createCriteria(User.class);

    1)criteria.add(Restrictions.gt("age", new Integer(20)));

    2)criteria.add(Restrictions.lt("age", new Integer(40)));

    3)criteria.add(Restrictions.or(Restrictions.eq("age", new Integer(20)), Restrictions.isNull("age")));

    crit.add(Restrictions.ilike("name","1", MatchMode.END));

    // // ilikeiignore之意,所以查詢englishName"Optima?XL?100K?Ultracentrifuge"(忽略大小寫)的記錄

    4)criteria.add(Restrictions.sqlRestriction("{alias}.name LIKE (?)", "cater%", Hibernate.STRING));

    5) Integer[] ages = {new Integer(20), new Integer(40)};

    Type[] types = {Hibernate.INTEGER, Hibernate.INTEGER};

    criteria.add(Restrictions.sqlRestriction("{alias}.age BETWEEN (?) AND (?)", ages, types));

     

    6) criteria.setFirstResult(51);

    criteria.setMaxResult(50);

      7) 統計表rowCount()count()max()min()countDistinct()

    criteria.setProjection(Projections.avg("age"));

      8)分組20,20,25,30 à 20.25.30

           criteria.setProjection(Projections.groupProperty("age"));

     9)結合統計分組

       ProjectionList projectionList = Projections.projectionList();

    projectionList.add(Projections.groupProperty("age"));

    projectionList.add(Projections.rowCount());

    Criteria criteria = session.createCriteria(User.class);

    criteria.setProjection(projectionList);

    10) Query Criteria Id: data type Long

    projectionList.add(crit.add( Expression.idEq( 11111L) );

    11) Query Criteria Id: Not Equal

     crit.add( Expression.ne( "name""noName" ) );)

    12)crit.setProjection(Projections.rowCount());

    13示不重復記錄

    criteria.setResultTransformer(criteria.DISTINCT_ROOT_ENTITY);

    List users = criteria.list();

    Restrictions的幾個常用限定詢方法如下表所示:

    方法

    Restrictions.eq

    等於

    Restrictions.allEq

    使用Map,使用key/value進行多個等於的比對

    Restrictions.gt

    大於 >

    Restrictions.ge

    大於等於 >=

    Restrictions.lt

    小於 <

    Restrictions.le

    小於等於 <=

    Restrictions.between

    對應SQLBETWEEN子句

    Restrictions.like

    對應SQLLIKE子句

    Restrictions.in

    對應SQLin子句

    Restrictions.and

    and關係

    Restrictions.or

    or關係

    Restrictions.sqlRestriction

    SQL限定

    HQLHibernate Query Language

     PS:

     1:HOL是不區分大小寫的,但名稱是區分大小寫的.

         2:如果User類別提供有適當的建構方法,則可以在使用HQL時直接指定新建一個物件傳回

    Query query = session.createQuery("select new User(user.name, user.age) from User as user");

        3. 如果試圖使用SessionsaveOrupdate()方法,則會新增一筆資料而不是更新原有的資料。

        4. 還可以結合having子句,例如只將平均大於20的資料分組顯示出來:

    Query query = session.createQuery("select user.sex, avg(user.age) from User user group by user.sex having avg(user.age) > 20");

       5. 更新與刪除的時候

                 Session session = sessionFactory.openSession();

    Transaction tx= session.beginTransaction();

    Query query = session.createQuery("update User set name='momor' where name='bbb'");

    query.executeUpdate();

    tx.commit();

    session.close();

     

    Hibernate:HQL/QBC查詢語言比的用法

    Hib索方式
    1'
    圖檢索方式。通象,調.iterator()方法可以得到order
    如果是首次行此方法,Hib會從數據載關聯order象,否就從存中得到。
    2'OID索方式。通sessiongetload方法知道了OID的情況下可以使用
    3'HQL
    索方式。使用面向象的HQL查詢語sessionfind方法利用HQL查詢
    4'QBC
    索方式。利用QBCAPI索它是封裝了基于字符串的查詢語
    5'
    本地的SQL索方式。使用本地數據SQL查詢語Hib負責索到的JDBC果集映射持久化

    種檢索方式的使用合和特點:

    HQL 
     是面向象的查詢語言,同SQL有些相似是Hib中最常用的方式。
           
    查詢設定各種查詢條件。
           
    支持投影查詢索出象的部分屬性。
           
    支持分頁查詢,允使用havinggroup by
           
    提供內制的聚集函數,sum()min()max()
           
    調用用的自定SQL
           
    支持子查詢,嵌入式查詢
           
    支持動態綁定參數
    使用Query接口替sessionfind方法。
       Query Q = session.createQuery("from customer as c where c.name = :customerName" + "and c.age = :customerAge");
       query.setString ("customerName" , "tom");
       query.setInteger("customerAge" , "21");
       list result = query.list();
    QBC :  QBCAPI
    提供了另一方式,主要是Criteria接口、Criterion接口和Expression
       Criteria criteria = session.createCriteria(customer.class);
       Criterion criterion1 = Expression.like("name","t%");
       Criterion criterion2 = Expression.eq("age",new Integer(21));
       Critera = criteria.add(criterion1) ;
       Critera = criteria.add(criterion2) ;
       list result = criteria.list(); 
       
    或是: list result = session.createCriteria(Customer.class).add(Expression.eq("this.name","tom")).list(); 
    SQL :  
    采用HQLQBCHib生成SQL句適用所有數據
       Query query  = session.createSQLQuery("select {c.*} from customers c where c.name like : customername " + "and c.age = :customerage","c",customer.calss);
       query.setString("customername","tom");
       query.setInteger("customerage","21");
       list result = query.list();
    /////////////
    態查詢
       HQL 
    session.createQuery("from employee");
       QBC 
    session.createCriteria(employee.class);
       HQL : session.createQuery("from hourlyEmployee");
       QBC : session.createCriteria(hourlyEmployee.class);
       
    下面的HQL查詢語句將索出所有的持久化象:
       from java.lang.Object ;
       from java.io.serializable ;
    ////////////
    查詢的排序
       1'
    查詢結果按照客姓名升序排列:
       HQL 

            Query query = session.createQuery ("from customer c order by c.name");
       QBC 

            Criteria criteria = session.createCriteria(customer.class);
            criteria.addOrder(order.asc("name"));
       HQL :
            Query query = session.createQuery ("from customer c order by c.name asc , c.age desc");
       QBC :
            Criteria criteria = session.createCriteria(customer.class);
            criteria.addOrder(order.asc ("name"));
            criteria.addOrder(order.desc("age")); 

            import net.sf.hibernate.pression.Order
            import mypack.Order
            ...........
            Criteria criteria = session.createCritria (mypack.Order.class);
            criteria.addOrder(net.sf.hibernate.Order.asc("name"));
    ///////////HQL
    句的參數Query接口提供了定各Hib映射型的方法。
            setBinary()
            setString()
            setBoolean()
            setByte()
            setCalendar()
            setCharacter()
            setDate()
            setDouble()
            setText()
            setTime()
            setTimestamp()
            setEntity()//
    把參數與一個持久化的事例lsit result = session.createQuery("from order o where o.customer =            :customer").setEntity("customer" , customer).list ;
            setParameter()//
    定任意型的參數
            setProperties()//
    把命名參數與一個象的屬性值綁 Query query = session.createQuery("from customer c where c.name =:     name " + "and c.age =:age" );
            Query.setProperties(customer); 

     

    主站蜘蛛池模板: 国产乱人免费视频| 午夜亚洲乱码伦小说区69堂| 亚洲综合在线一区二区三区 | 国产亚洲美女精品久久久2020| 永久在线观看www免费视频| 一级毛片在线免费视频| 亚洲色成人WWW永久网站| 大陆一级毛片免费视频观看 | 亚洲AV日韩精品久久久久久久| 国产午夜无码视频免费网站| 99久久精品日本一区二区免费| 免费看一区二区三区四区| 人妻仑刮八A级毛片免费看| 亚洲精品av无码喷奶水糖心| 亚洲视频免费在线播放| 日韩精品视频免费观看| a拍拍男女免费看全片| 国产精品免费一区二区三区四区| 乱淫片免费影院观看| 国产精品亚洲精品爽爽| 亚洲一卡2卡三卡4卡无卡下载| 久久久亚洲欧洲日产国码是AV| 国产成A人亚洲精V品无码性色| 久久久久亚洲av成人无码电影 | 亚洲乱码无限2021芒果| 亚洲综合在线视频| 亚洲激情在线观看| 亚洲AV无码国产精品麻豆天美| 亚洲一区无码中文字幕| 久久99亚洲综合精品首页| 国产啪亚洲国产精品无码| 久久亚洲欧洲国产综合| 中文字幕亚洲专区| 在线观看午夜亚洲一区| 红杏亚洲影院一区二区三区| 久久精品国产亚洲精品| 成人午夜亚洲精品无码网站| 国产亚洲精品影视在线产品 | 无码专区AAAAAA免费视频| 免费国产成人午夜在线观看| 久久伊人免费视频|