java调用存储过程返回map
时间: 2023-10-12 14:08:43 浏览: 91
以下是Java代码示例,演示如何调用存储过程并返回Map:
```java
import java.sql.*;
import java.util.*;
public class StoredProcDemo {
public static void main(String[] args) {
String url = "jdbc:mysql://localhost:3306/mydb";
String username = "root";
String password = "password";
String procName = "get_customer_info";
int customerId = 12345;
try (Connection conn = DriverManager.getConnection(url, username, password)) {
CallableStatement cstmt = conn.prepareCall("{call " + procName + "(?, ?, ?, ?)}");
cstmt.setInt(1, customerId);
cstmt.registerOutParameter(2, Types.VARCHAR);
cstmt.registerOutParameter(3, Types.VARCHAR);
cstmt.registerOutParameter(4, Types.DATE);
cstmt.execute();
Map<String, Object> resultMap = new HashMap<>();
resultMap.put("name", cstmt.getString(2));
resultMap.put("address", cstmt.getString(3));
resultMap.put("dob", cstmt.getDate(4));
System.out.println(resultMap);
} catch (SQLException e) {
e.printStackTrace();
}
}
}
```
在此示例中,我们使用JDBC API调用存储过程`get_customer_info`,该存储过程接受一个int类型的参数`customerId`,并返回三个输出参数:一个varchar类型的`name`,一个varchar类型的`address`和一个date类型的`dob`。
我们使用`CallableStatement`对象来设置输入参数和注册输出参数,并使用`execute()`方法执行存储过程。然后,我们将输出参数的值存储在一个Map对象中,并打印出该Map对象。
请注意,此示例仅适用于MySQL数据库。在其他数据库中,存储过程的调用语法可能会有所不同。
阅读全文