Hibernate 自定义sql 01

我们一般在用到Hibernate写sql查询时,有的时候list 中的Object并不是已有的Model,所以一般我们会重新新建一个Model。

     方法一:在Dao层中编写。Spring框架支持持久层开发

public List<MyObj> getList(int rid, String name){      
         List<MyObj> list = new ArrayList();     
         Connection conn = null;      
         Statement cs = null;      
         ResultSet rs = null;      
         try{           
              conn = 
       SessionFactoryUtils.getDataSource(getSessionFactory()).getConnection();           
                 String sql = "...";           
                 cs = conn.createStatement();           
                 rs = cs.executeQuery(sql);          
                 int orderIndex = 1;           
                 while(rs.next){              
                 MyObj obj = new MyObj(orderIndex);              
                 obj.setCode(rs.getFloat("code"));              
                 obj.setName(rs.getName("name"));     
                 ....
                 orderIndex++;
                 list.add(obj);    
              }                 
              if(rs!=null){
                  rs.close();
              }   
              if(cs!=null){
                   cs.close();
              }
          }catch (SQLException e) {
	log.error("call package_statistics.statistics_subject1错误!",e);
          } finally {
	if (rs != null)
	try {
                     rs.close();
	} catch (Exception e) {
	}
	if (cs != null)
	try {
	     cs.close();
	} catch (Exception e) {
	}
	try {
	     if (conn != null) {
	           conn.close();
	     }
	} catch (Exception e) {
	}
       }
}

 方法二、在Dao

 

public List<TMember> infoListByTMember(String sql) {
		List<TMember> list = new ArrayList<TMember>();
		Session session = null;
		Transaction t = null;
		try {
			session = getSessionFactory().openSession();
			t = session.beginTransaction();
			SQLQuery query = session.createSQLQuery(sql);
			// 1、将查询结果转换成List<Map<字段名,字段值>>
			query.setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP);
			// 2、将结果转换成指定的bean List<你的指定javaBean>
			query.setResultTransformer(Transformers.aliasToBean(TMember.class));
			list = query.list();
			t.commit();
		} catch (Exception e) {
			e.printStackTrace();
			t.rollback();
		} finally {
			t = null;
			session.close();
		}
		return list;
	}

 

    

    

转载于:https://www.cnblogs.com/GenghisKhan/archive/2012/02/08/2342696.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值