自從學(xué)數(shù)據(jù)庫以來,從SQL查詢-HQL查詢-到Criteria 查詢。有人問我:掌握一種查詢語句不就可以嗎,為什么還要學(xué)Criteria 查詢?我回答道:用到特定于數(shù)據(jù)庫的SQL 語句,程序本身會依賴于特定的數(shù)據(jù)庫,不了解SQL 語句,恐怕對使用HQL帶來困難。Hibernate提供的Criteria查詢幫助我們解決了這種問題。
下面介紹一下Criteria查詢。
1、Criteria 查詢采用面向?qū)ο蠓绞椒庋b查詢條件,又稱為對象查詢2、對SQL 語句進行封裝3、采用對象的方式來組合各種查詢條件4、由Hibernate 自動產(chǎn)生SQL 查詢語句5、Criteria由Hibernate session進行創(chuàng)建Criteria查詢表達式:SessionFactory sessionFactory = new Configuration().configure() .buildSessionFactory(); Session session = sessionFactory.openSession(); Criteria criteria = session.createCriteria(User.class);//創(chuàng)建Criteria對象
List result = criteria.list();使用Criteria 的list()方法獲得數(shù)據(jù),list()方法返回List 實例 Iterator it = result.iterator();
while (it.hasNext()) { User user = (User) it.next(); System.out.Criteria查詢排序 :
Criteria 查詢不僅能組合出SQL中where子句的功能,還可以組合出排序查詢功能使用org.hibernate.criterion.Order對結(jié)果進行排序排序的方法為:1、asc()2、desc()Criteria查詢排序 語法:SessionFactory sessionFactory = new Configuration().configure() .buildSessionFactory();Session session = sessionFactory.openSession();Criteria criteria = session.createCriteria(House.class);//創(chuàng)建Criteria對象//加入Order 條件criteria.addOrder(Order.desc("price"));//以價格降序的方式排列List result = criteria.list();Iterator it = result.iterator();while (it.hasNext()) { House house = (House) it.next(); System.out.println("標(biāo)題:" + house.getTitle() + " 價格" + house.getPrice());}session.close();sessionFactory.close();Criteria查詢實現(xiàn)分頁 :
SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();Session session = sessionFactory.openSession();Criteria criteria = session.createCriteria(House.class);//創(chuàng)建Criteria對象criteria.setFirstResult(3);//設(shè)定查詢返回結(jié)果的第一行數(shù)據(jù)的位置criteria.setMaxResults(2);//限定查詢返回數(shù)據(jù)的行數(shù)List results = criteria.list();Iterator it = results.iterator();while(it.hasNext()){ House h = (House)it.next(); System.out.println("標(biāo)題:"+h.getTitle()+ " 價格:"+h.getPrice()); }session.close(); sessionFactory.close();Restrictions常用限定查詢方法:

您可以通過點擊 右下角 的按鈕 來對文章內(nèi)容作出評價, 也可以通過左下方的 關(guān)注按鈕 來關(guān)注我的博客的最新動態(tài)。 如果文章內(nèi)容對您有幫助, 不要忘記點擊右下角的 推薦按鈕 來支持一下哦 如果您對文章內(nèi)容有任何疑問, 可以通過評論或發(fā)郵件的方式聯(lián)系我: 2276292708@QQ.com如果需要轉(zhuǎn)載,請注明出處,謝謝!!
新聞熱點
疑難解答