Hibernate Spring 回调 jdbc 执行查询

来源:互联网 发布:装备制造业数据 编辑:程序博客网 时间:2024/05/16 10:26

getHibernateTemplate().find()只支持HQL的。
要用Sql或存储过程的话,这样用:
        final String sql="....";
        return this.getHibernateTemplate().executeFind(new HibernateCallback(){
            public Object doInHibernate(Session session) throws HibernateException, SQLException {
                Connection conn=session.connection();
                //使用JDBC.....
                return ...;
            }
        });
Hibernate3的话,可以用SQLQuery;
--------------------------------------------------------------------------------------

另一个例子。

回调执行查询:

 

 

回调执行删除:

 

------------------------------------------------------------------------

 

使用hibernate的session,取得一个连接,然后用jdbc.

直接回调JDBC接口嘛!会spring吧?spring+hibernate回调的代码给你:

public   RowSetDynaClass   findBySQL(String   queryString,   Object[]   params)   {
Session   session   =   this.getHibernateTemplate().getSessionFactory()
.openSession();
Connection   conn   =   session.connection();
RowSetDynaClass   result   =   null;
try   {
PreparedStatement   ps   =   conn.prepareStatement(queryString);
for   (int   i   =   0;   i   <   params.length;   i++)   {
Object   param   =   params[i];
ps.setObject(i   +   1,   param);
}
ResultSet   rs   =   ps.executeQuery();
result   =   new   RowSetDynaClass(rs);
rs.close();
ps.close();
session.close();

}   catch   (SQLException   e)   {
logger.error( "Method:findBySQL(String   queryString,   Object[]   params) ",   e);
}

return   result;
}


RowSetDynaClass是org.apache.commons.beanutils下的一个类,自己从网上下就是了