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

本文介绍了使用Spring JDBC调用存储过程的两种方法:1.通过JDBCTemplate,创建CallableStatementCreator和CallableStatementCallback来执行并获取结果。2.利用SimpleJdbcCall进行调用,使用MapSqlParameterSource设置参数并获取输出结果。详细步骤和代码示例已给出。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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");
 }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值