您的位置:首页 > 编程语言 > Java开发

SpringJDBC调用存储过程的两种方式(先记录下来,日后在细细研究实现原理)

2010-10-16 13:02 549 查看
1.调用JDBCTemplate执行存储过程

public List<Map<String, Object>> executeProce(final Object... params) {

return (List<Map<String, Object>>) jt.execute(new CallableStatementCreator() {

public CallableStatement createCallableStatement(Connection con) throws SQLException {

CallableStatement cs = null;

cs = con.prepareCall("call _procedure(?,?)");

cs.registerOutParameter(2, OracleTypes.CURSOR);

cs.setString(1, (String) params[0]);

return cs;

}

}, new CallableStatementCallback() {

public Object doInCallableStatement(CallableStatement cs) throws SQLException, DataAccessException {

List<Map<String, Object>> datas = new ArrayList<Map<String, Object>>();

Map<String, Object> mapDatas = null;

cs.execute();

ResultSet rs = (ResultSet) cs.getObject(2);

while (rs.next()) {

mapDatas = new HashMap<String, Object>();

mapDatas.put("id", rs.getObject("id"));

mapDatas.put("name", rs.getObject("name"));

datas.add(mapDatas);

}

return datas;

}

});

}

2.利用SimpleJdbcCalls执行存储过程

public List<Map<String, Object>> executeProce(Object... params) {

SqlParameterSource in = new MapSqlParameterSource().addValue("id",params[0]);

return (List<Map<String, Object>>) new SimpleJdbcCall(jt).withProcedureName("_procedure")

.execute(in).get("v_outcur");

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: