天天看点

spring的jdbcTemplate调用存储过程

 假如我们有P_GET_TOPIC_NUM这一个存储过程,有两个参数,第一个参数userId是传进去的,第二个参数是传出来的,举例如下:

public int getUserTopicNum(final int userId) {   
    String sql = "{call P_GET_TOPIC_NUM(?,?)}";   
    //使用   Object execute(String callString, CallableStatementCallback action)接口   
    Object obj = getJdbcTemplate().execute(sql,new CallableStatementCallback(){   
        public Object doInCallableStatement(CallableStatement cs) throws SQLException, DataAccessException {   
            cs.setInt(1,userId);   
            cs.registerOutParameter(2, Types.INTEGER);   
            cs.execute();   
            return new Integer(cs.getInt(2));   
        }      
    });   
    return ((Integer)obj).intValue();   
}