1、使用Query對象,不須要寫sql語句,可是要寫hql語句】java
1.hql:hibernate query language,hibernate提供查詢語言,這個hql語句和普通sql語句很相似sql
2.hql和sql語句的區別數據庫
-使用sql語句是操做數據庫表和字段的數組
-使用hql語句是操做實體類和屬性的session
3.查詢全部屬性的hql語句工具
①from+實體類名稱【sql語句:select * from 表名】測試
4.Query對象的使用spa
①建立Query對象hibernate
②調用query對象裏面的方法獲得結果code
package com.lk.hibernate2.test; import java.util.List; import org.hibernate.Session; import org.hibernate.Transaction; import org.hibernate.query.Query; import com.lk.hibernate2.entity.User; import com.lk.hibernate2.util.HibernateUtil; /** * 測試Hibernate查詢的方法 * @author Administrator * */ public class Test { @org.junit.Test public void test() { Session session=null; Transaction transaction=null; try{ //獲取session(HibernateUtil是我本身建立的一個工具類,專門用來獲取session的) session=HibernateUtil.getSession(); transaction=session.beginTransaction(); //操做業務 //1.建立一個query對象 Query query=session.createQuery("from User"); //2.調用query的list()方法返回值是一個List類型的 List<User> list=query.list(); //循環輸出值 for (User user : list) { System.out.println(user); } //提交事務 transaction.commit(); }catch (Exception e) { e.printStackTrace(); //事務回滾 transaction.rollback(); }finally{ //關閉方法 HibernateUtil.close(); } } }
2、Criteria對象
1.使用這個對象查詢操做不須要寫查詢語句,直接調用方法就能夠實現
2.實現的過程
①建立Criteria對象
②調用Criteria裏面的方法
@org.junit.Test public void testCriteria() { Session session=null; Transaction transaction=null; try{ //獲取session(HibernateUtil是我本身建立的一個工具類,專門用來獲取session的) session=HibernateUtil.getSession(); transaction=session.beginTransaction(); //操做業務 //1.建立一個Criteria對象 Criteria criteria=session.createCriteria(User.class); //2.調用Criteria的list()方法返回值是一個List類型的 List<User> list=criteria.list(); //循環輸出值 for (User user : list) { System.out.println(user); } //提交事務 transaction.commit(); }catch (Exception e) { e.printStackTrace(); //事務回滾 transaction.rollback(); }finally{ //關閉方法 HibernateUtil.close(); } }
3、SQLQuery對象查詢
1.使用hibernate時候,調用底層sql實現
2.實現過程
①建立對象
②調用對象的方法獲得結果
注意:若是用SQLQuery對象直接調用list()方法,返回的集合中元素是以集合的形式出現的,因此要讓其以實體類的對象形式出現須要調用addEntity(實體類.class)方法來實現
@org.junit.Test public void testSQLQuery() { Session session=null; Transaction transaction=null; try{ //獲取session(HibernateUtil是我本身建立的一個工具類,專門用來獲取session的) session=HibernateUtil.getSession(); transaction=session.beginTransaction(); //操做業務 //1.建立一個SQLQuery對象 String sql="select * from user"; SQLQuery sQLQuery=session.createSQLQuery(sql); //------------------- /* //2.調用SQLQuery的list()方法返回值是一個List類型的,list集合裏面的元素是以數組的形式存在的 List<Object[]> list=sQLQuery.list(); //循環輸出值 for (Object[] objects : list) { System.out.println(Arrays.toString(objects)); }*/ //-------------------- //讓SQLQuery的list()方法返回值中的元素是以對象形式存在的解決辦法 sQLQuery.addEntity(User.class); //調用sQLQuery裏面的方法 List<User> list =sQLQuery.list(); for (User user : list) { System.out.println(user); } //提交事務 transaction.commit(); }catch (Exception e) { e.printStackTrace(); //事務回滾 transaction.rollback(); }finally{ //關閉方法 HibernateUtil.close(); } }