Hbernameカスタムsql 01
2485 ワード
私たちは一般的にヒップホップでsqlを書いて調べますが、ある時はlistのObjectは既存のModelではないので、新しくModelを作ります。
方法1:Dao層で作成します。Springフレームは耐久層開発に対応しています。
方法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;
}