simplejdbccall上的输出参数

时间:2011-09-02 06:07:56

标签: java spring jdbc

我有一个带有单个整数输出参数和5个varchar输入参数的存储过程,无论我尝试过什么,我似乎都无法获得输出参数。我在数据库上运行了sproc并且它返回了数据,所以我看不出我做错了什么。

有没有人知道如何从simplejdbccall获取输出参数?

我有这样的事情:

    SimpleJdbcCall simpleJdbcCall =
        new SimpleJdbcCall( getDatasourceForEnvironment() ).withProcedureName( "_Get_Id" ).declareParameters(
            new SqlParameter( "MyID", Types.VARCHAR ), new SqlParameter( "MySourceID", Types.VARCHAR ),
            new SqlParameter( "MyLocationID", Types.VARCHAR ), new SqlParameter( "MyVisitID", Types.VARCHAR ),
            new SqlParameter( "MyVisitDate", Types.VARCHAR ) );

    HashMap< String, String > input = new HashMap< String, String >();
    input.put( "MyID", myObj.getMyID() );
    input.put( "MySourceID", myObj.getMySourceID() );
    input.put( "MyLocationID", myObj.getMyLocationID() );
    input.put( "MyVisitID", myObj.getMyVisitID() );
    input.put( "MyVisitDate", myObj.getMyVisitDate() );

    System.out.println( simpleJdbcCall.execute( input ) );

1 个答案:

答案 0 :(得分:2)

有两件事我错了:

  1. 我连接到错误的数据库。编写更细化的单元 测试显示我的错误。

  2. 由于“执行”的返回是一个映射,因此输出参数是大小写 敏感。

  3. 长话短说,你不需要做任何特别的事情 - Spring默认包含输出参数。此外,MapSqlParameterSource是一种更清晰的方法,可以使用这些方法。