jdbctempleate 执行postgres 数据库存储过程返回结果集
来源:互联网 发布:sql中group by 编辑:程序博客网 时间:2024/06/18 13:51
创建表:
创建存储过程
这个文件我为了测试方便 放在 src 目录下
spring 配置文件
java 代码:
- create table myuser
- (
- id numeric(5,0) not null,
- name varchar(20) not null,
- sex varchar(8) not null
- )
- insert into myuser values(1 , '李亚希' , '男' );
create table myuser(id numeric(5,0) not null,name varchar(20) not null,sex varchar(8) not null)insert into myuser values(1 , '李亚希' , '男' );
创建存储过程
- CREATE LANGUAGE plpgsql;
- CREATE OR REPLACE FUNCTION getUsers()
- RETURNS refcursor AS
- $$
- DECLARE recordcur refcursor;
- BEGIN
- OPEN recordcur FOR
- SELECT id, name ,sexFROM myuser;
- RETURN recordcur;
- END;
- $$LANGUAGE plpgsql;
CREATE LANGUAGE plpgsql;CREATE OR REPLACE FUNCTION getUsers()RETURNS refcursor AS $$DECLARE recordcur refcursor;BEGINOPEN recordcur FORSELECT id, name ,sex FROM myuser;RETURN recordcur;END;$$LANGUAGE plpgsql;
这个文件我为了测试方便 放在 src 目录下
spring 配置文件
- <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
- <property name="driverClassName">
- <value>org.postgresql.Driver</value>
- </property>
- <property name="url">
- <value>jdbc:postgresql://localhost:5432/postgres</value>
- </property>
- <property name="username">
- <value>postgres</value>
- </property>
- <property name="password">
- <value>postgres</value>
- </property>
- </bean>
- <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
- <property name="dataSource">
- <ref local="dataSource"/>
- </property>
- </bean>
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"> <property name="driverClassName"> <value>org.postgresql.Driver</value> </property> <property name="url"> <value>jdbc:postgresql://localhost:5432/postgres</value> </property> <property name="username"> <value>postgres</value> </property> <property name="password"> <value>postgres</value> </property> </bean> <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"> <property name="dataSource"> <ref local="dataSource"/> </property> </bean>
java 代码:
- package test;
- import java.sql.CallableStatement;
- import java.sql.Connection;
- import java.sql.ResultSet;
- import java.sql.SQLException;
- import java.sql.Types;
- import java.util.ArrayList;
- import java.util.HashMap;
- import java.util.List;
- import java.util.Map;
- import org.springframework.context.ApplicationContext;
- import org.springframework.context.support.ClassPathXmlApplicationContext;
- import org.springframework.dao.DataAccessException;
- import org.springframework.jdbc.core.CallableStatementCallback;
- import org.springframework.jdbc.core.CallableStatementCreator;
- import org.springframework.jdbc.core.JdbcTemplate;
- public class Test {
- /**
- * @param args
- */
- public static void main(String[] args) {
- ApplicationContext context = new ClassPathXmlApplicationContext(
- "dao.xml");
- JdbcTemplate jdbcTemplate = (JdbcTemplate) context
- .getBean("jdbcTemplate");
- jdbcTemplate.execute(new CallableStatementCreator() {
- public CallableStatement createCallableStatement(Connection con)
- throws SQLException {
- String storedProc = "{?=call getUsers()}";// 调用的sql
- con.setAutoCommit(false); //这句很重要 , 没有报错
- CallableStatement cs = con.prepareCall(storedProc);
- cs.registerOutParameter(1, Types.OTHER);
- return cs;
- }
- }, new CallableStatementCallback<Object>() {
- public Object doInCallableStatement(CallableStatement cs)
- throws SQLException, DataAccessException {
- List<Map<String, String>> resultsMap = new ArrayList<Map<String, String>>();
- cs.execute();
- ResultSet rs = (ResultSet) cs.getObject(1);// 获取游标一行的值
- while (rs.next()) {// 转换每行的返回值到Map中
- Map<String, String> rowMap = new HashMap<String, String>();
- rowMap.put("id", rs.getString("id"));
- rowMap.put("name", rs.getString("name"));
- rowMap.put("sex", rs.getString("sex"));
- System.out.println(rowMap.get("id") + "========="
- + rowMap.get("name") + "==========="
- + rowMap.get("sex"));
- }
- rs.close();
- return resultsMap;
- }
- });
- }
- }
- jdbctempleate 执行postgres 数据库存储过程返回结果集
- jdbctempleate 执行postgres 数据库存储过程返回结果集
- Java 执行存储过程--返回多个结果集
- 执行Oracle存储过程返回游标结果集
- Java 执行存储过程--返回多个结果集
- 执行存储过程 获得 table 返回结果
- MFC调用postgres数据库返回游标存储过程的疑惑
- 存储过程返回结果集
- 存储过程返回结果集
- 在存储过程中执行别的存储过程并返回其结果集
- mysql简单存储过程创建并返回执行结果
- Oracle 存储过程返回结果集
- Oracle 存储过程返回结果集
- [Oracle]Oracle 存储过程返回结果集
- 存储过程要返回结果集
- Oracle 存储过程返回结果集
- php调用存储过程返回结果集
- Oracle 存储过程返回结果集
- 文字选中行 字体凸出变大变亮效果
- javascript基础小结
- 文件搜索
- java 深浅拷贝 clone
- PHP数据结构预热:PHP的迭代器
- jdbctempleate 执行postgres 数据库存储过程返回结果集
- java迷宫
- 学习JAVA第一天
- java.net.UnknownHostException 异常处理
- 专业方向
- swing suggest
- 利用线段树求逆序数(JAVA)
- 《重构,改善现有代码的设计》第八章 Duplicate Observed Data
- JDBC基础教程之PreparedStatement