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

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

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

    迷失北京

    BlogJava 聯系 聚合 管理
      60 Posts :: 0 Stories :: 13 Comments :: 0 Trackbacks

    HQL實例:

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

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

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

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

    5. 帶有參數的查詢:from Category c where c.id > :min and c.id < :max。hql語句中’:min’ 表示的是參數,可以像jdbc中一樣,為參數賦值。在hql中可以這樣,這里也運用了鏈式編程:

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

    .setInteger("min", 2)

    .setInteger("max", 8);

    6. 帶參數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()是設置每頁的最大顯示量,setFirstResult()是設置其實元素從哪里開始,這里0代表最后一條元素。

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

    9. HQL函數:

    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''%'匹配所有字符,'_'匹配單個字符。

    13. 

    一些功能函數,但是不重要了解即可: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. 獲取當前的時間: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)

    需要注意的一點:in同樣可以實現exist的功能,但是exist的執行效率較高。

    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);

    方式一相對比較笨重。

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

    方式三是Hibernate自帶的方法。

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

    方法一:給這個類新建一個構造方法,傳進去你想要的參數,然后hql語句可以這樣寫:

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

    方法二:用JDBCsql語句:

    Session.createSQLQuery(sql);

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

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 又粗又硬又大又爽免费视频播放| 久久一区二区三区免费播放| 欧美a级成人网站免费| 亚洲色四在线视频观看| 国产亚洲精品免费视频播放| 亚洲熟伦熟女新五十路熟妇| 日韩毛片免费一二三| 亚洲国产a级视频| 皇色在线免费视频| 国产亚洲欧洲精品| 久久午夜羞羞影院免费观看| 精品日韩亚洲AV无码一区二区三区 | 国产hs免费高清在线观看| 狠狠热精品免费观看| 伊人久久亚洲综合| 日本视频免费高清一本18| 91精品国产亚洲爽啪在线影院 | 四虎成人免费网址在线| 蜜桃传媒一区二区亚洲AV| 亚洲国产专区一区| 免费一区二区三区| 亚洲一欧洲中文字幕在线| 韩国欧洲一级毛片免费| h在线看免费视频网站男男| 亚洲AV日韩精品久久久久久久| 99re免费99re在线视频手机版| 亚洲jizzjizz在线播放久| 免费v片视频在线观看视频| 最新亚洲成av人免费看| 亚洲另类春色校园小说| 吃奶摸下高潮60分钟免费视频 | 久久一区二区免费播放| 亚洲视频日韩视频| 免费国产怡红院在线观看| 午夜视频在线免费观看| 亚洲欧美国产国产一区二区三区| 亚洲国产精品一区二区九九| 99热在线免费播放| 白白色免费在线视频| 久久丫精品国产亚洲av| 四虎在线播放免费永久视频 |