spring中调用存储过程2011-03-14挨踢老人springframework.jdbc.object.StoredProcedure是对应存储过程调用的操作对象,它通过其父类org.springframework.jdbc.object.SqlCall获得相应的底层API支持(CallableStatementCreator),然后在此基础之上构建了调用存储过程的执行方法。StoredProcedure是抽象类,所以需要实现相应子类以封装对特定存储过程的调用,还记得我们在讲解JdbcTemplate调用存储过程时候定义的存储过程吗?CREATE PROCEDURE CountTable(IN tableName varchar(1000),OUT sqlStr varchar(1000) , INOUT v INT) BEGIN set @flag = v; set @sql = CONCAT("select count(*) into @res from " , tableName , " where ACTIVE_FLAG=?"); PREPARE stmt FROM @sql; EXECUTE stmt using @flag; DEALLOCATE PREPARE stmt; set v = @res; set sqlStr = @sql; END通过继承StoredProcedure,我们可以为该存储过程的调用提供一个对应的操作对象:public class CountTableStoredProcedure extends StoredProcedure {
private static final String PROCEDURE_NAME = "CountTable";
public static final String IN_PARAMETER_NAME = "tableName"; public static final String OUT_PARAMETER_NAME = "sqlStr"; public static final String INOUT_PARAMETER_NAME = "v";