HQL 是Hibernate Query Language的簡寫,即 hibernate 查詢語言:HQL采用面向對象的查詢方式。HQL查詢提供了更加豐富的和靈活的查詢特性,因此Hibernate將HQL查詢方式立為官方推薦的標准查詢 方式,HQL查詢在涵蓋Criteria查詢的所有功能的前提下,提供了類似標准SQL語句的查詢方式,同時也提供了更加面向對象的封裝。
在HQL中,你可以直接From你的實體對象來進行查詢:
Java代碼
/**
* 簡單使用
*/
@SuppressWarnings("unchecked")
public static void test1(){
Session session = HibernateSessionFactory.currentSession();
String hql = "from User u";
Query query = session.createQuery(hql);
List<User> user = query.list();
System.out.println("------------SQL執行完畢---------------");
for (User us : user) {
System.out.println(us.getName());
}
}
類的后面可以接別名
如果想單獨查詢某一列,可以這樣使用:
Java代碼
/**
* 查詢某列
*/
@SuppressWarnings("unchecked")
public static void test2(){
Session session = HibernateSessionFactory.currentSession();
String hql = "select name from User u";
Query query = session.createQuery(hql);
List<String> user = query.list();
System.out.println("------------SQL執行完畢---------------");
for (String us : user) {
System.out.println(us);
}
}
如果想查詢某幾列的話,只是返回的內容不同了而已:
Java代碼
/**
* 查詢某幾列
*/
@SuppressWarnings("unchecked")
public static void test3(){
Session session = HibernateSessionFactory.currentSession();
String hql = "select id,name from User u";
Query query = session.createQuery(hql);
List user = query.list();
System.out.println("------------SQL執行完畢---------------");
for(Object obj : user){
Object[] arrObj = (Object[])obj;
System.out.println(arrObj[0] + "/t-->/t" + arrObj[1]);
}
}