我有一个接受参数的存储过程并返回一个long值。
如何使用jdbcTemplate调用此存储过程并获取返回值。
String sql = ""call my_proc(?,?)"
long ret = jdbcTemplate.queryForObject(sql, Long.class, param1,param2);
这是对的吗?
答案 0 :(得分:1)
有许多方法可以在Spring中调用存储过程。 您可以使用 SimpleJdbcTemplate ,也可以选择使用 JdbcTemplate 。看来你有兴趣使用JdbcTemplate。
以下是使用JdbcTemplate调用存储过程的可用方法
每种方法都有大量的互联网示例。明智地选择其中任何一个。
顺便说一下,你的代码似乎没问题。但对于复杂的存储过程,调用像jdbcTemplate.queryForObject
这样的存储过程是不够的。
答案 1 :(得分:0)
Long ret = jdbcTemplate.queryForObject("select my_proc(?,?)", Long.class, param1, param2);
如果结果为空,queryForObject抛出异常,希望你能处理
答案 2 :(得分:0)
您可以使用 SimpleJdbcCall 来调用存储过程 下面是代码片段,它说明了存储过程的调用并获取了返回值
SimpleJdbcCall jdbcCall = new SimpleJdbcCall(jdbcTemplateSP).withProcedureName("spGetEmpDetails");
Map<String, Object> inParamMap = new HashMap<String, Object>();
inParamMap.put("EmpID", String.valueOf(id));
SqlParameterSource in = new MapSqlParameterSource(inParamMap);
Map<String, Object> simpleJdbcCallResult = jdbcCall.execute(in);