spring调用存储过程

时间:2022-09-29 15:58:54

1.继承StoredProcedure

org.springframework.jdbc.object.StoredProcedure是对应存储过程调用的操作对象,它通过其父类

org.springframework.jdbc.object.SqlCall获得相应的底层API支持(CallableStatementCreator), 然

后在此基础之上构建了调用存储过程的执行方法。

2、重写父类的execute()方法。将存储过程的参数封装成Map类型的传入该方法

.
3、写一个方法来封装存储过程的方法及把参数放到Map里面.

如:
  Map paraMap = new HashMap();
  paraMap.put(IN_PARAMETER_NAME, tableName);
  paraMap.put(INOUT_PARAMETER_NAME, v);
注意:key值一定要与前面构造函数里面声明的参数一致。


4、execute()返回的map值要取到里面的value值,可以用前面构造函数声明时候用到的key值去取。
  如:(String)resultMap.get(OUT_PARAMETER_NAME);就得到了存储过程的返回值。

示例如下:

public class xxxxProcedure extends StoredProcedure {
    private static final String PROCEDURE_NAME = "xxxx";

    protected xxxxProcedure() {
        /* empty */
        }
    
    public xxxxProcedure(JdbcTemplate jdbcTemplate) {
        super(jdbcTemplate, PRO_NAME);
        declareParameter(new SqlParameter("xxxx", Types.VARCHAR));
        declareParameter(new SqlParameter("xxxx", Types.VARCHAR));
        declareParameter(new SqlParameter("xxxx", Types.NUMERIC));
    }

    public void execute(String xxxx,String xxxx,int xxxx) {
        Map<String, Object> paramsIn = new HashMap<String, Object>();
        paramsIn.put("xxxx", xxxx);
        paramsIn.put("xxxx", xxxx);
        paramsIn.put("xxxx", xxxx);
        super.execute(paramsIn);
    }

}