hibernate——HQL查詢總結

HQL概述:

HQL(Hibernate Query Language) 是面向對象的查詢語言, 它和 SQL 查詢語言有些類似. 在 Hibernate 提供的各類檢索方式中, HQL 是使用最廣的一種檢索方式.java

list : 查詢結果多個
uniqueResult : 查詢結果惟一
session

HQL的簡單查詢

// 簡單查詢:
String hql = "from Customer";
//方法一
Query query = session.createQuery(hql);
List<Customer> list = query.list();
//方法二
List<Customer> list = session.createQuery(hql).list();

HQL的別名查詢:

// 別名查詢:
//String hql = "from Customer asc";
//String hql = "from Customer c";
String hql = "select c from Customer c";

HQL的多態查詢:

String hql = "from java.lang.Object";
String hql = "from java.io.Serializable";

HQL的排序查詢:

String hql = "from Customer order by age asc";
String hql = "from Customer order by age desc";

HQL的分頁查詢:

Query query = session.createQuery("from Order");
query.setFirstResult(10);
query.setMaxResults(10);
List<Order> list = query.list();

HQL檢索單個對象:

Query query = session.createQuery("from Customer where cname = ?");
query.setParameter(0, "張三");
Customer customer = (Customer) query.uniqueResult();

HQL的條件查詢:

/** * HQL條件查詢 * 按位置綁定參數: */
// 1.根據名稱進行查詢
List<Customer> list = session
		.createQuery(
				"from Customer where cname = ?")
		.setParameter(0,"張三").list(); 

System.out.println(list.get(0));

// 2.根據名稱進行查詢
List<Customer> list = session
		.createQuery(
				"from Customer c where c.cname = ?") 
		.setParameter(0,"張三").list(); 

System.out.println(list.get(0));

// 3.條件並列:
List<Customer> list = session
		.createQuery(
				"from Customer where cname like ? and age >= ?")
		.setParameter(0, "任%").setParameter(1, 35).list();

for (Customer customer : list) {
	System.out.println(customer);
}

/** * HQL條件查詢 * 按名稱綁定參數: */
List<Customer> list = session
		.createQuery(
				"from Customer where cname like :cname and age >= :age")
		.setParameter("cname", "任%").setParameter("age", 35).list();
		
for (Customer customer : list) {
	System.out.println(customer);
}

HQL使用匯集函數:

//count()/max()/min()/avg()/sum()
String hql = "select count(*) from Order";
Long num = (Long) session.createQuery(hql).uniqueResult();

HQL分組統計:

String hql = "select o.customer.cname,count(*) from Order o group by o.customer.cname";
List<Object[]> list = session.createQuery(hql).list();
for (Object[] objects : list) {
	System.out.println(Arrays.toString(objects));
}

HQL的投影查詢:

String hql = "select cname from Customer";
List<String> list  = session.createQuery(hql).list();
for (String cname : list) {
	System.out.println(cname);
}
		
String hql = "select age from Customer";
List<Integer> list  = session.createQuery(hql).list();
for (Integer age : list) {
	System.out.println(age);
}

String hql= "select cname,age from Customer";
List<Object[]> list  = session.createQuery(hql).list();
for (Object[] objects : list) {
	System.out.println(Arrays.toString(objects));
}

// 使用構造函數的方式進行投影查詢.
String hql = "select new Customer(cname,age) from Customer";
List<Customer> list = session.createQuery(hql).list();
for (Customer customer : list) {
	System.out.println(customer);
}

在這裏插入圖片描述

相關文章
相關標籤/搜索