HasorDB 存储过程调用
HasorDB 支持存储过程的调用。以 MySQL 为例,有下例存储。执行存储过程后会产生 1
个入参,1
个出参,2
个结果集
drop procedure if exists proc_select_table;
create procedure proc_select_table(in userName varchar(200),
out outName varchar(200))
begin
select * from test_user where name = userName;
select * from test_user;
set outName = concat(userName,'-str');
end;
执行存储过程,并接收所有返回的数据
List<SqlParameter> parameters = new ArrayList<>();
parameters.add(SqlParameterUtils.withInput("dative", Types.VARCHAR));
parameters.add(SqlParameterUtils.withOutputName("outName", Types.VARCHAR));
String querySql = "{call proc_select_table(?,?)}";
Map<String, Object> result = jdbcTemplate.call(querySql, parameters);
执行结果中获取输出参数的方式如下:
String outName = resultMap.get("outName");
执行结果中分别获取两个 select 结果的方式如下:
// 第一个 select 的结果
List<Map<String, Object>> result1 = resultMap.get("#result-set-1");
// 第二个 select 的结果
List<Map<String, Object>> result2 = resultMap.get("#result-set-2");
提示
通过 jdbcTemplate.call
调用存储过程返回的结果集,只会以 List/Map
形式返回。