迷失北京

          BlogJava 聯(lián)系 聚合 管理
            60 Posts :: 0 Stories :: 13 Comments :: 0 Trackbacks

          HQL實(shí)例:

          1. 查詢表中的所有記錄:from Category

          2. 帶有where子句的條件查詢:from Category c where c.name > 'c5'

          3. 結(jié)果根據(jù)某一字段排序:from Category c order by c.name desc(desc表示降序排列,asc表示升序排列)

          4. 去除重復(fù)記錄獲得單一記錄:select distinct c from Category c order by c.name desc

          5. 帶有參數(shù)的查詢:from Category c where c.id > :min and c.id < :max。hql語句中’:min’ 表示的是參數(shù),可以像jdbc中一樣,為參數(shù)賦值。在hql中可以這樣,這里也運(yùn)用了鏈?zhǔn)骄幊蹋?/span>

          session.createQuery("from Category c where c.id > :min and c.id < :max")

          .setInteger("min", 2)

          .setInteger("max", 8);

          6. 帶參數(shù)hql查詢的另外一種查詢:from Category c where c.id > ? and c.id < ?

          7. hibernate分頁查詢 

          Query q = session.createQuery("from Category c order by c.name desc");

          q.setMaxResults(3);

          q.setFirstResult(0);

          其中setMaxResult()是設(shè)置每頁的最大顯示量,setFirstResult()是設(shè)置其實(shí)元素從哪里開始,這里0代表最后一條元素。

          8. 多表連接查詢:select t.title, c.name from Topic t join t.category c

          9. HQL函數(shù):

          a) Count():select count(*) from Msg m

          b) Max()-min()-avg():select max(m.id), min(m.id), avg(m.id), sum(m.id) from Msg m

          c) Between:from Msg m where m.id between 3 and 5

          d) In:from Msg m where m.id in (3, 4, 5)

          10. Is null;is not null:from Msg m where m.cont is not null

          11. Is empty:from Topic t where t.msgs is empty

          12. Like:from Topic t where t.title like '%5''%'匹配所有字符,'_'匹配單個(gè)字符。

          13. 

          一些功能函數(shù),但是不重要了解即可:select lower(t.title)," +

           "upper(t.title)," +

           "trim(t.title)," +

           "concat(t.title, '***')," +

           "length(t.title)" +

                " from Topic t ")

          Trim()是去掉首尾空格,返回字符串的副本,concat()將字符串欲查詢出的字符串連接。

          14. Abs()-sqrt()-mod():select abs(t.id)," +  "sqrt(t.id)," + "mod(t.id,2)" + " from Topic t 

          15. 獲取當(dāng)前的時(shí)間:select current_date, current_time, current_timestamp, t.id from Topic t

          16. Having子句:select t.title, count(*) from Topic t group by t.title having count(*) <= 1

          17. Existfrom Topic t where not exists (select m.id from Msg m where m.topic.id=t.id)

          需要注意的一點(diǎn):in同樣可以實(shí)現(xiàn)exist的功能,但是exist的執(zhí)行效率較高。

          18. Update的用法:update Topic t set t.title = upper(t.title)

          19. hql刪除的三種方式:

          Hibernate的刪除方式:

          /*方式一*/
          String hql = "select p from Province as p where p.id=?";
          Query query = session.createQuery(hql);
          query.setString(0, id);
          Province p = (Province)query.list().get(0);
          session.delete(p);
          /*方式二*/
          String hql = "delete Province where id=?";
          Query query = session.createQuery(hql);
          query.setString(0, id);
          int x = query.executeUpdate();
          if(x>0){
            flag = true;
          }
          /*方式三*/
          Province p = (Province)session.get(Province.class, id);
          session.delete(p);

          方式一相對(duì)比較笨重。

          方式二中的Hql語句不要加as + 別名!

          方式三是Hibernate自帶的方法。

          20. 查詢表中的某些字段:

          方法一:給這個(gè)類新建一個(gè)構(gòu)造方法,傳進(jìn)去你想要的參數(shù),然后hql語句可以這樣寫:

          select new Class(c.name, c.date, c.sex) from Class

          方法二:用JDBCsql語句:

          Session.createSQLQuery(sql);

          posted on 2011-04-22 20:37 王康 閱讀(4080) 評(píng)論(0)  編輯  收藏

          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 斗六市| 长泰县| 土默特左旗| 河池市| 襄垣县| 甘孜| 蛟河市| 朝阳区| 年辖:市辖区| 朔州市| 民乐县| 偏关县| 许昌市| 清镇市| 会泽县| 阳城县| 克什克腾旗| 班玛县| 辛集市| 永和县| 锡林郭勒盟| 东台市| 临漳县| 苗栗县| 罗甸县| 莱西市| 高清| 绵阳市| 方正县| 孟连| 偃师市| 沁水县| 红安县| 旅游| 三明市| 崇左市| 新竹县| 乌拉特中旗| 盐边县| 碌曲县| 闸北区|