通过hibernate4 中doReturningWork 方法执行存储过程。示例代码中session factory 通过项目中获取,这里仅做示例用。
读取数据通过原生jdbc方式读取,不记得jdbc的可以去看看jdbc。
public void testCallProcedure() {
// 测试数据
int deptId = 1;
SessionFactory sessionFactory = null;
String sql = "{call pro_getDeptUserAndChildDeptUserListByDeptId(?)}";
Session session = sessionFactory.getCurrentSession();
// 通过 hibernate 4 doReturningWork 方法执行存储过程
session.doReturningWork(new ReturningWork() {
@Override
public Object execute(Connection connection) throws SQLException {
CallableStatement cs = connection.prepareCall(sql);
cs.setInt(1, deptId);
ResultSet rs = cs.executeQuery();
List<Map<String, Object>> userList = new ArrayList<Map<String, Object>>();
// 读取数据
while (rs.next()) {
Map<String, Object> map = new HashMap<String, Object>();
map.put("userId", rs.getString("user_id"));
userList.add(map);
}
return userList;
}
});
}