javaEE Hibernate, HQL面向对象查询语句

Test.java:

package cn.xxx.demo;

import java.util.List;

import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.junit.Test;

import cn.xxx.domain.Customer;
import cn.xxx.utils.HibernateUtils;

//学习HQL语法
public class Test {
	
	//基本语法
	@Test
	public void fun1(){
		Session session = HibernateUtils.openSession();
		Transaction tx = session.beginTransaction();
		//----------------------------------------------------
		String hql = " select * from  cn.xxx.domain.Customer "; //完整写法
		String hql2 = " from  Customer "; //简单写法 (整个工程中只有一个Customer类,可以省略包名)
		String hql3 = " from java.lang.Object ";   // 会查询所有配置过orm的数据表。(一般不这样使用)
		
		Query query = session.createQuery(hql3);
		
		List list = query.list();
		
		System.out.println(list);
		//----------------------------------------------------
		tx.commit();
		session.close();
	}	
	
	@Test
	//排序 order by
	public void fun2(){
		Session session = HibernateUtils.openSession();
		Transaction tx = session.beginTransaction();
		//----------------------------------------------------
		String hql1 = " from  cn.xxx.domain.Customer order by cust_id asc "; //升序
		String hql2 = " from  cn.xxx.domain.Customer order by cust_id desc "; //降序
		
		Query query = session.createQuery(hql2);
		
		List list = query.list();
		
		System.out.println(list);
		//----------------------------------------------------
		tx.commit();
		session.close();		
	}

	@Test
	//条件查询 where
	public void fun3(){
		Session session = HibernateUtils.openSession();
		Transaction tx = session.beginTransaction();
		//----------------------------------------------------
		String hql1 = " from  cn.xxx.domain.Customer where cust_id =? ";//完整写法
		String hql2 = " from  cn.xxx.domain.Customer where cust_id = :id ";//完整写法
		
		Query query = session.createQuery(hql2);
		
		query.setParameter(0, 2l);  // 对应hql1
		//query.setParameter("id", 2l);  // 对应hql2		
		
		List list = query.list();
		
		System.out.println(list);
		//----------------------------------------------------
		tx.commit();
		session.close();		
	}
	
	@Test
	//分页查询
	public void fun4(){
		Session session = HibernateUtils.openSession();
		Transaction tx = session.beginTransaction();
		//----------------------------------------------------
		String hql1 = " from cn.xxx.domain.Customer ";
		
		Query query = session.createQuery(hql1);
		
		//limit ?,?
		// (当前页数-1)*每页条数
		query.setFirstResult(0);
		query.setMaxResults(10);  // 每页条数
		
		List list = query.list();
		
		System.out.println(list);
		//----------------------------------------------------
		tx.commit();
		session.close();		
	}
	
	@Test
	//统计查询  聚合函数
	//count	计数
	//sum 	求和
	//avg	平均数
	//max
	//min
	public void fun5(){
		Session session = HibernateUtils.openSession();
		Transaction tx = session.beginTransaction();
		//----------------------------------------------------
		String hql1 = " select count(*) from  cn.xxx.domain.Customer ";
		String hql2 = " select sum(cust_id) from  cn.xxx.domain.Customer ";
		String hql3 = " select avg(cust_id) from  cn.xxx.domain.Customer ";
		String hql4 = " select max(cust_id) from  cn.xxx.domain.Customer ";
		String hql5 = " select min(cust_id) from  cn.xxx.domain.Customer ";
		
		Query query = session.createQuery(hql5);
		
		Number number  = (Number) query.uniqueResult(); // 查询结果只有一条记录用uniqueResult()
		
		System.out.println(number);
		//----------------------------------------------------
		tx.commit();
		session.close();		
	}
		
	@Test
	//投影查询 (查询部分列(对象属性))
	public void fun6(){
		Session session = HibernateUtils.openSession();
		Transaction tx = session.beginTransaction();
		//----------------------------------------------------
		String hql1 = " select cust_name from cn.xxx.domain.Customer "; // 查询部分列(对象属性)。 默认查询所有列
		String hql2 = " select cust_name,cust_id from  cn.xxx.domain.Customer ";
		// 每条查询记录封装成Customer对象
		String hql3 = " select new Customer(cust_id,cust_name) from  cn.xxx.domain.Customer "; //new Customer(cust_id,cust_name);Customer必须要有对应的构造函数,然后必须手动添加空参的构造函数。 
		
		Query query = session.createQuery(hql3);
		List list = query.list();
		
		System.out.println(list);		
		//----------------------------------------------------
		tx.commit();
		session.close();		
	}
}

猜你喜欢

转载自blog.csdn.net/houyanhua1/article/details/81077630