歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Hibernate的2種查詢及分頁

Hibernate的2種查詢及分頁

日期:2017/3/1 10:06:40   编辑:Linux編程

很久都沒有使用hibernate做開發了,好多東西都有點生疏了。今天忽然想到了順便自己就復習了一下,覺得hibernate還是很方便的至少他提供了統一的分頁。開發就不會為換了數據庫而去修改大量的代碼了。

hibernate的查詢有這麼2種,一種是hql查詢,Criteria查詢。2種我覺得使用起來都比較方便

1.hql的帶參數查詢有一個小小的技巧,可以不用索引的方式

  1. Query q=session.createQuery("update StudentInfo set username=? where fid=?");
  2. q.setString(0, "劉若英");
  3. q.setInteger(1, 3);

上面的這個是原始的寫法,還有一種更好使的就是把問號的地方換成 :參數的名稱 ,這樣就不用怕記錯順序了。

  1. Query q=session.createQuery("update StudentInfo set username=:username where fid=:fid");
  2. q.setString("username", "劉若英");
  3. q.setInteger("fid", 3);

2.使用Criteria查詢數據,這種方式不需要寫hql語句,個人覺得簡單的使用這種方法也是足夠了。Restrictions帶有很多的查詢條件如or,in都有相應支持

  1. public void otherQuery() {
  2. Session session = null;
  3. Transaction tra = null;
  4. // 通過工具類取得session
  5. try {
  6. session = HibernateUtil.getSession();
  7. tra = session.beginTransaction();
  8. Criteria c=session.createCriteria(StudentInfo.class);
  9. //c.add(Restrictions.eq("username", "潘玮柏"));
  10. c.add(Restrictions.or(Restrictions.lt("fid", 5)));
  11. //從第一條開始查詢
  12. c.setFirstResult(0);
  13. //每次查詢10條數據
  14. c.setMaxResults(10);
  15. List<StudentInfo> all = c.list();
  16. //查詢單條數據
  17. //StudentInfo info=(StudentInfo)c.uniqueResult();
  18. for (StudentInfo studentInfo : all) {
  19. System.out.println("姓名:"+studentInfo.getUsername());
  20. }
  21. tra.commit();
  22. } catch (HibernateException e) {
  23. // TODO Auto-generated catch block
  24. e.printStackTrace();
  25. } finally {
  26. if (session != null) {
  27. session.close();
  28. }
  29. }
  30. }

同樣的查詢單條數據也可以使用get方法,大家可以自己試試,下面的分頁面試中經常有被問到,大家可以著重記錄依一下

  1. //從第一條開始查詢
  2. c.setFirstResult(0);
  3. //每次查詢10條數據
  4. c.setMaxResults(10);
Copyright © Linux教程網 All Rights Reserved