日期:2014-05-20  浏览次数:20703 次

Hibernate升级MVC(JSP+servlet+javabean+DAO)封装通用DAO问题
public List<Map> findObjectByWhere(String sql, Object[] param) {
PreparedStatement ps = null;
ResultSet rs = null;
ResultSetMetaData rsmd = null;
List<Map> list = new ArrayList<Map>();
try {
ps = conn.prepareStatement(sql);
rsmd = ps.getMetaData();
if(param != null && param.length != 0){
for(int i=0;i<param.length;i++){
ps.setObject(i+1, param[i]);
}
}
rs = ps.executeQuery();
int i=0;
Map map = null;
String columnName = null;
Object columnValue = null;
while(rs.next()){
i = rsmd.getColumnCount();
map = new HashMap();
for(int j=1;j<=i;j++){
columnName = rsmd.getColumnName(j);
columnValue = rs.getObject(columnName);
map.put(columnName, columnValue);
}
list.add(map);
}
} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException(e);
}finally{
close(ps,rs);
}
return list;
}
这是一段旧系统里的通用DAO接口实现的代码,如何才能将它封装成hibernate的通用DAO,重点头疼的是里面的SQL要改为HQL,希望有经验的同行们给点思路,以及对可能会出现的问题给点建议。(我POJO已经搭建好了,根据数据库表结构配置好了注解,现在首要问题是将JDBC的通用DAO封装成hibernate形式的)谢谢!

------解决方案--------------------
JBDC部分本身就封装在hibernate里面了
你这很多代码都是多余的。。。
SQL 和 HQL没有太大的区别。只不过后者更提现了面向对象而已
我以前做的是根据传入的一个参数判断是增删改查的哪一个操作。。。
现在公司都不用SSH了 也没怎么去琢磨。。。。学习中。期待好的方案
------解决方案--------------------
要是改为通用的DAO的话,这个就没必要改了。。可以去看一下 范型DAO 

http://blog.csdn.net/azheng270/article/details/2232044

这个挺有用的。