SpringJDBC调用存储过程的两种方式(先记录下来,日后在细细研究实现原理)
2010-10-16 13:02
549 查看
1.调用JDBCTemplate执行存储过程
public List<Map<String, Object>> executeProce(final Object... params) {
return (List<Map<String, Object>>) jt.execute(new CallableStatementCreator() {
public CallableStatement createCallableStatement(Connection con) throws SQLException {
CallableStatement cs = null;
cs = con.prepareCall("call _procedure(?,?)");
cs.registerOutParameter(2, OracleTypes.CURSOR);
cs.setString(1, (String) params[0]);
return cs;
}
}, new CallableStatementCallback() {
public Object doInCallableStatement(CallableStatement cs) throws SQLException, DataAccessException {
List<Map<String, Object>> datas = new ArrayList<Map<String, Object>>();
Map<String, Object> mapDatas = null;
cs.execute();
ResultSet rs = (ResultSet) cs.getObject(2);
while (rs.next()) {
mapDatas = new HashMap<String, Object>();
mapDatas.put("id", rs.getObject("id"));
mapDatas.put("name", rs.getObject("name"));
datas.add(mapDatas);
}
return datas;
}
});
}
2.利用SimpleJdbcCalls执行存储过程
public List<Map<String, Object>> executeProce(Object... params) {
SqlParameterSource in = new MapSqlParameterSource().addValue("id",params[0]);
return (List<Map<String, Object>>) new SimpleJdbcCall(jt).withProcedureName("_procedure")
.execute(in).get("v_outcur");
}
public List<Map<String, Object>> executeProce(final Object... params) {
return (List<Map<String, Object>>) jt.execute(new CallableStatementCreator() {
public CallableStatement createCallableStatement(Connection con) throws SQLException {
CallableStatement cs = null;
cs = con.prepareCall("call _procedure(?,?)");
cs.registerOutParameter(2, OracleTypes.CURSOR);
cs.setString(1, (String) params[0]);
return cs;
}
}, new CallableStatementCallback() {
public Object doInCallableStatement(CallableStatement cs) throws SQLException, DataAccessException {
List<Map<String, Object>> datas = new ArrayList<Map<String, Object>>();
Map<String, Object> mapDatas = null;
cs.execute();
ResultSet rs = (ResultSet) cs.getObject(2);
while (rs.next()) {
mapDatas = new HashMap<String, Object>();
mapDatas.put("id", rs.getObject("id"));
mapDatas.put("name", rs.getObject("name"));
datas.add(mapDatas);
}
return datas;
}
});
}
2.利用SimpleJdbcCalls执行存储过程
public List<Map<String, Object>> executeProce(Object... params) {
SqlParameterSource in = new MapSqlParameterSource().addValue("id",params[0]);
return (List<Map<String, Object>>) new SimpleJdbcCall(jt).withProcedureName("_procedure")
.execute(in).get("v_outcur");
}
相关文章推荐
- 内省调用JavaBean实现getXxx和setXxx的两种方式
- Spring定时器的两种实现方式
- jdbc调用mysql存储过程实现代码
- Spring定时器的两种实现方式
- (七)android开发中两种方式监听短信的原理和实现
- 在ado.net中实现oracle存储过程调用两种方式
- spring实现定时任务的两种方式
- MyBatis学习笔记-Spring集成DAO层实现方式记录
- 使用库函数API和C代码中嵌入汇编代码两种方式实现对sysinfo的系统调用
- Javascript 对象方式实现命名参数调用(上):原理和手动实现
- JavaScript实现二级、多级(N级)联动下拉列表框更新版,支持IE6,FireFox,函数和类两种调用方式,支持到N级,非常通用。
- (4) 利用 Setter方式实现 【第一种方式】 依赖注入,编码剖析Spring依赖注入的原理
- 基于Maven的SpringBoot项目实现热部署的两种方式
- servlet调用spring容器中的bean,的两种方式一种注解一种xml配置
- AsyncTask和Handler两种异步方式实现原理和优缺点比较
- 快速排序的两种实现方式,主要是Partition函数的实现原理不一样
- 记录一下Android两种实现双击退出应用的方式
- spring jdbc 调用存储过程封装
- Spring AOP动态代理原理与实现方式
- spring boot 集成quartz 2.0 实现前端动态配置(获取spring上下文)的两种方式,启动数据库中已开启定时任务