Hibernate中结果集封装演变过程

public class QueryResultPackageTest {
@Test
	public void test1(){
	Session session=HibernateUtil.getInstance().openSession();
	session.beginTransaction();
	String hql="select e.id,e.name,e.salay,e.dept.name,e.dept.sn,e.dept.address.city from Employee e";
	List<Object[]> ret=session.createQuery(hql).list();
	for(Object[] os:ret){
		System.out.println(Arrays.toString(os));
	}
	session.getTransaction().commit();
	session.close();
}
@Test
	public void test2(){
	Session session=HibernateUtil.getInstance().openSession();
	session.beginTransaction();
	//使用new list把每一行查询结果包装成一个List对象
	String hql="select new list(e.id,e.name,e.salay,e.dept.name,e.dept.sn,e.dept.address.city)from Employee e";
	List<List<Object>> ret=session.createQuery(hql).list();
	for(List<Object>os:ret){
		System.out.println(os);
	}
	session.getTransaction().commit();
	session.close();
}
@Test 
	public void test3(){
	Session session=HibernateUtil.getInstance().openSession();
	session.beginTransaction();
	String hql="select new MAP(e.id as eid,e.name as ename,e.salay as esalay,e.dept.name as dname,e.dept.sn as dsn,e.dept.address.city as city)from Employee e";
	@SuppressWarnings("unchecked")
	List<Map<String,Object>> ret=session.createQuery(hql).list();
	for(Map<String,Object> os:ret){
		System.out.println(os);
	}
	session.getTransaction().commit();
	session.close();
}

创建一个EmployeeVO来存放结果集

public class EmployeeVO {
	private Long id;
	private String name;
	private BigDecimal salay;
	private String deptName;
	private String deptSn;
	private String city;

省略set/get方法还有构造方法

@Test
	public void test4(){
	Session session=HibernateUtil.getInstance().openSession();
	session.beginTransaction();
	//直接通过new VO对象来把结果集包装成一个VO对象
	//注意:VO对象需要一个构造方法,这个构造方法的参数值顺序需要和查询顺序匹配
	String hql="SELECT NEW query.EmployeeVO(e.id,e.name,e.salay,e.dept.name,e.dept.sn,e.dept.address.city)from Employee e";
	List<EmployeeVO>ret=session.createQuery(hql).list();
	for(EmployeeVO os:ret){
		System.out.println(os);
	}
	session.getTransaction().commit();
	session.close();
}


猜你喜欢

转载自blog.csdn.net/qq_36594703/article/details/79596002