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();
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值