Session session =HibernateSessionFactory.getSession();
SQLQuery query = session.createSQLQuery("{Call Tj(?)}"); //这里调用存储过程
query.setString(1,"ddd");
List list =query.list();
session.close();
-------------------------------->项目中的方法一
public void updateBySP(final String callsql, final Object... pi) {
getHibernateTemplate().execute(new HibernateCallback() {
public Object doInHibernate(Session session)
throws HibernateException, SQLException { -------->自动管理事务
Connection connection = session.connection();
CallableStatement cstmt = null;
try {
cstmt = connection.prepareCall(callsql);
cstmt.clearParameters();
if (pi != null) { -------->参数判断及类型转换
for (int i = 0; i < pi.length; i++) {
if (pi[i] == null)
cstmt.setString(i + 1, null);
else {
if (pi[i] instanceof java.util.Date) {
cstmt.setDate(i + 1, new java.sql.Date(
((Date) pi[i]).getTime()));
} else if (pi[i] instanceof java.sql.Date) {
cstmt.setDate(i + 1, (java.sql.Date) pi[i]);
} else {
cstmt.setString(i + 1, pi[i].toString());
}
}
}
}
return cstmt.executeUpdate();
} finally {
if (cstmt != null)
cstmt.close();
if (connection != null) {
connection.close();
}
}
}
});
}
-------------------------------->项目中的方法二
public int executeBySQL(final String sql, final Object... args) {
if (sql == null) {
return 0;
}
Integer result = (Integer) getHibernateTemplate().execute(
new HibernateCallback() {
public Object doInHibernate(Session session)
throws HibernateException, SQLException {
SQLQuery sqlQuery = session.createSQLQuery(sql);
if (CollectionUtils.notEmpty(args)) {
for (int i = 0; i < args.length; i++) {
sqlQuery.setParameter(i, args[i]);
}
}
return sqlQuery.executeUpdate();
}
});
return result;
}