Cách chính xác để gọi các thủ tục được lưu trữ bằng cách sử dụng mẫu JDBC Spring (circa 2012) hiện đại là gì?Mẫu JDBC Spring để gọi Thủ tục lưu sẵn
Nói, tôi có một thủ tục lưu trữ mà tuyên bố cả hai IN
và OUT
thông số, một cái gì đó như thế này:
mypkg.doSomething(
id OUT int,
name IN String,
date IN Date
)
Tôi đã đi qua CallableStatementCreator
cách tiếp cận dựa trên nơi chúng tôi phải đăng ký rõ ràng IN
và OUT
tham số. Hãy xem xét các phương pháp sau đây trong JdbcTemplate
lớp:
public Map<String, Object> call(CallableStatementCreator csc, List<SqlParameter> declaredParameters)
Tất nhiên, tôi biết rằng tôi có thể sử dụng nó như vậy:
List<SqlParameter> declaredParameters = new ArrayList<SqlParameter>();
declaredParameters.add(new SqlOutParameter("id", Types.INTEGER));
declaredParameters.add(new SqlParameter("name", Types.VARCHAR));
declaredParameters.add(new SqlParameter("date", Types.DATE));
this.jdbcTemplate.call(new CallableStatementCreator() {
@Override
CallableStatement createCallableStatement(Connection con) throws SQLException {
CallableStatement stmnt = con.createCall("{mypkg.doSomething(?, ?, ?)}");
stmnt.registerOutParameter("id", Types.INTEGER);
stmnt.setString("name", "<name>");
stmnt.setDate("date", <date>);
return stmnt;
}
}, declaredParameters);
mục đích declaredParameters
là gì khi tôi đã đăng ký chúng trong tôi csc
triển khai? Nói cách khác, tại sao tôi cần phải vượt qua trong một csc
khi mùa xuân chỉ đơn giản có thể làm con.prepareCall(sql)
nội bộ? Về cơ bản, tôi không thể vượt qua cả hai người trong số họ thay vì cả hai?
Hoặc, có cách nào tốt hơn để gọi thủ tục được lưu trữ (sử dụng Mẫu JDBC Spring) so với những gì tôi đã đi qua cho đến nay?
Lưu ý: Bạn có thể tìm thấy nhiều câu hỏi dường như có tiêu đề tương tự nhưng chúng không giống với tiêu đề này.
Tôi có thể thấy rằng câu hỏi này khá phổ biến hiện tại và đã hơn 2 năm kể từ khi được hỏi. Nếu bất cứ ai nghĩ rằng có một cách thậm chí còn đẹp hơn để gọi thủ tục lưu trữ ngay bây giờ mà mùa xuân 4 là ra, xin vui lòng gửi một câu trả lời hoặc đề nghị một chỉnh sửa. – adarshr