Hbernameカスタムsql 01

2485 ワード

私たちは一般的にヒップホップでsqlを書いて調べますが、ある時はlistのObjectは既存のModelではないので、新しくModelを作ります。
     方法1: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;

	}