Spring 调用存储过程方法

 

//单独提取,用法跟原生一样,还是原生的好用,尼玛各种框架各种BUG

//设置相应的参数
BasicDataSource dataSource = new BasicDataSource();
//1、数据库驱动类
dataSource.setDriverClassName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
//2、url,用户名,密码
dataSource.setUrl("jdbc:sqlserver://localhost:1433;databaseName=a1");
dataSource.setUsername("sa"); dataSource.setPassword("123");
//3、初始化连接大小
dataSource.setInitialSize(1);
//4、连接池最大数据量

//5、连接池最大小空闲
dataSource.setMinIdle(1);
dataSource.setMaxIdle(20);
//6、最大等待时间 单位毫秒

//7、指明连接是否被空闲连接回收器(如果有)进行检验
dataSource.setPoolPreparedStatements(true);
//8、运行一次空闲连接回收器的时间间隔(60秒)
dataSource.setTimeBetweenEvictionRunsMillis(60 * 1000);
//9、验证时使用的SQL语句
// dataSource.setValidationQuery("SELECT 1 FROM DUAL");
//10、借出连接时不要测试,否则很影响性能
//11、申请连接的时候检测,如果空闲时间大于 timeBetweenEvictionRunsMillis,执行validationQuery检测连接是否有效
dataSource.setTestWhileIdle(false);
JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
jdbcTemplate.execute(
new CallableStatementCreator() {
public CallableStatement createCallableStatement(Connection con) throws SQLException {
String storedProc = "{call MenuToFlow(?,?,?,?)}";// 调用的存储过程
CallableStatement cs = con.prepareCall(storedProc);
cs.setString(1, menuid);// 设置输入参数的值
cs.setString(2, code);// 设置输入参数的值
cs.setString(3, usercode);// 设置输入参数的值
cs.setString(4, "tblcchz");// 设置输入参数的值
return cs;
}
},new CallableStatementCallback<Object>() {
public Object doInCallableStatement(CallableStatement cs) throws SQLException, DataAccessException {
cs.execute();
System.out.println("执行");
return cs;
}
});

posted @ 2020-08-12 10:40  appdesign  阅读(700)  评论(0)    收藏  举报