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

优质内容筛选与推荐>>
1、20165311 第二周学习总结
2、山寨AjaxPro,解决分布式问题,实现主流接口,保留原版的API方法,唯一的不同是稍微修改下webconfig
3、Jquey 一步一步的学习。
4、windows2003 iis6.0站点打不开,找不到服务器或 DNS 错误。
5、3Sum Closest leetcode


长按二维码向我转账

受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。

    阅读
    好看
    已推荐到看一看
    你的朋友可以在“发现”-“看一看”看到你认为好看的文章。
    已取消,“好看”想法已同步删除
    已推荐到看一看 和朋友分享想法
    最多200字,当前共 发送

    已发送

    朋友将在看一看看到

    确定
    分享你的想法...
    取消

    分享想法到看一看

    确定
    最多200字,当前共

    发送中

    网络异常,请稍后重试

    微信扫一扫
    关注该公众号





    联系我们

    欢迎来到TinyMind。

    关于TinyMind的内容或商务合作、网站建议,举报不良信息等均可联系我们。

    TinyMind客服邮箱:support@tinymind.net.cn