標籤:查詢 first log set ict max create res on()
技術分析之QBC檢索方式
0. QBC:Query By Criteria 按條件進行查詢1. 簡單查詢,使用的是Criteria介面 List<Customer> list = session.createCriteria(Customer.class).list(); for (Customer customer : list) { System.out.println(customer); }2. 排序查詢 * 需要使用addOrder()的方法來設定參數,參數使用org.hibernate.criterion.Order對象 * 具體代碼如下: Session session = HibernateUtils.getCurrentSession(); Transaction tr = session.beginTransaction(); Criteria criteria = session.createCriteria(Linkman.class); // 設定排序 criteria.addOrder(Order.desc("lkm_id")); List<Linkman> list = criteria.list(); for (Linkman linkman : list) { System.out.println(linkman); } tr.commit();3. 分頁查詢 * QBC的分頁查詢也是使用兩個方法 * setFirstResult(); * setMaxResults(); * 代碼如下; Session session = HibernateUtils.getCurrentSession(); Transaction tr = session.beginTransaction(); Criteria criteria = session.createCriteria(Linkman.class); // 設定排序 criteria.addOrder(Order.desc("lkm_id")); criteria.setFirstResult(0); criteria.setMaxResults(3); List<Linkman> list = criteria.list(); for (Linkman linkman : list) { System.out.println(linkman); } tr.commit();4. 條件查詢(Criterion是查詢條件的介面,Restrictions類是Hibernate架構提供的工具類,使用該工具類來設定查詢條件) * 條件查詢使用Criteria介面的add方法,用來傳入條件。 * 使用Restrictions的添加條件的方法,來添加條件,例如: * Restrictions.eq -- 相等 * Restrictions.gt -- 大於符號 * Restrictions.ge -- 大於等於 * Restrictions.lt -- 小於 * Restrictions.le -- 小於等於 * Restrictions.between -- 在之間 * Restrictions.like -- 模糊查詢 * Restrictions.in -- 範圍 * Restrictions.and -- 並且 * Restrictions.or -- 或者 * 測試代碼如下 Session session = HibernateUtils.getCurrentSession(); Transaction tr = session.beginTransaction(); Criteria criteria = session.createCriteria(Linkman.class); // 設定排序 criteria.addOrder(Order.desc("lkm_id")); // 設定查詢條件 criteria.add(Restrictions.or(Restrictions.eq("lkm_gender", "男"), Restrictions.gt("lkm_id", 3L))); List<Linkman> list = criteria.list(); for (Linkman linkman : list) { System.out.println(linkman); } tr.commit();5. 彙總函式查詢(Projection的彙總函式的介面,而Projections是Hibernate提供的工具類,使用該工具類設定彙總函式查詢) * 使用QBC的彙總函式查詢,需要使用criteria.setProjection()方法 * 具體的代碼如下 Session session = HibernateUtils.getCurrentSession(); Transaction tr = session.beginTransaction(); Criteria criteria = session.createCriteria(Linkman.class); criteria.setProjection(Projections.rowCount()); List<Number> list = criteria.list(); Long count = list.get(0).longValue(); System.out.println(count); tr.commit();
hibernate查詢之條件查詢