小编Vis*_*hnu的帖子

用于调用存储过程的Spring JDBC模板

使用现代(大约2012年)Spring JDBC模板调用存储过程的正确方法是什么?

说,我有一个存储过程声明了两个INOUT参数,如下所示:

mypkg.doSomething(
    id OUT int,
    name IN String,
    date IN Date
)
Run Code Online (Sandbox Code Playgroud)

我遇到过CallableStatementCreator必须明确注册INOUT参数的基础方法.在JdbcTemplate课堂上考虑以下方法:

public Map<String, Object> call(CallableStatementCreator csc, List<SqlParameter> declaredParameters)
Run Code Online (Sandbox Code Playgroud)

当然,我知道我可以像这样使用它:

List<SqlParameter> declaredParameters = new ArrayList<SqlParameter>();

declaredParameters.add(new SqlOutParameter("id", Types.INTEGER));
declaredParameters.add(new SqlParameter("name", Types.VARCHAR));
declaredParameters.add(new SqlParameter("date", Types.DATE));

this.jdbcTemplate.call(new CallableStatementCreator() {

    @Override
    CallableStatement createCallableStatement(Connection con) throws SQLException {
        CallableStatement stmnt = con.createCall("{mypkg.doSomething(?, ?, ?)}");

        stmnt.registerOutParameter("id", Types.INTEGER);
        stmnt.setString("name", "<name>");
        stmnt.setDate("date", <date>);

        return stmnt;
    }
}, declaredParameters);
Run Code Online (Sandbox Code Playgroud)

declaredParameters当我在csc实施中注册时,目的是什么?换句话说,为什么我需要传递一个 …

java spring spring-jdbc jdbctemplate

70
推荐指数
3
解决办法
20万
查看次数

SimpleJdbcCall:获取Microsoft/Sybase存储过程调用的结果

我有一个Microsoft和Sybase存储过程,返回结果为"return @value".我需要通过SimpleJdbcCall从Java读取值.

可能吗?

java sql-server sybase spring-jdbc

2
推荐指数
1
解决办法
4096
查看次数

标签 统计

java ×2

spring-jdbc ×2

jdbctemplate ×1

spring ×1

sql-server ×1

sybase ×1