0
스프링에서 어떻게 호출 할 수 있습니까? 나는 많은 google과 stackoverflow를 훑어 보았지만 적절한 답을 찾을 수 없었다.
아무에게도 해결책을 제공해 줄 수 있습니까? 미리 감사드립니다. 여기
스프링에서 어떻게 호출 할 수 있습니까? 나는 많은 google과 stackoverflow를 훑어 보았지만 적절한 답을 찾을 수 없었다.
아무에게도 해결책을 제공해 줄 수 있습니까? 미리 감사드립니다. 여기
내가 this StackOverflow question 및 the Spring documentation에 따라 함께 넣어 뭔가 :
import java.sql.Types;
import java.util.HashMap;
import java.util.Map;
import javax.sql.DataSource;
import oracle.jdbc.OracleTypes;
import org.springframework.jdbc.core.SqlOutParameter;
import org.springframework.jdbc.core.SqlParameter;
import org.springframework.jdbc.object.StoredProcedure;
public class SampleStoredProcedure extends StoredProcedure {
public SampleStoredProcedure(DataSource dataSource) {
super(dataSource, "PROC_NAME");
declareParameter(new SqlParameter("param1", Types.VARCHAR));
declareParameter(new SqlParameter("param2", Types.VARCHAR));
declareParameter(new SqlOutParameter("results_cursor", OracleTypes.CURSOR, new SomeRowMapper()));
compile();
}
public Map<String, Object> execute(String param1, String param2) {
Map<String, Object> inParams = new HashMap<>();
inParams.put("param1", param1);
inParams.put("param2", param2);
Map output = execute(inParams);
return output;
}
}
저장 프로 시저가 다른 스키마 또는 패키지에있는 경우, 위의 저장 프로 시저의 이름을 조정해야합니다. 또한 SomeRowMapper
대신 사용할 행 매퍼를 지정해야합니다.
를 호출하려면 :
DataSource dataSource = ... ; // get this from somewhere
SampleStoredProcedure sp = new SampleStoredProcedure(dataSource);
Map<String, Object> result = sp.execute("some string", "some other string");
// Do something with 'result': in particular, result.get("results_cursor")
// will be the list of objects returned
을 양자 택일로, 당신은 SimpleJdbcCall
사용할 수 있습니다 저장 프로 시저가 패키지에있는 경우
DataSource dataSource = ... ; // get this from somewhere
SimpleJdbcCall jdbcCall = new SimpleJdbcCall(dataSource);
Map<String, Object> result =
jdbcCall.withProcedureName("PROC_NAME")
.declareParameters(
new SqlParameter("param1", Types.VARCHAR),
new SqlParameter("param2", Types.VARCHAR),
new SqlOutParameter("results_cursor", OracleTypes.CURSOR, new SomeRowMapper()))
.execute("some string", "some other string");
을, 당신은 줄을 추가해야합니다
.withCatalogName("PACKAGE_NAME")
에서 jdbcCall
으로 설정하십시오. 마찬가지로 다른 스키마에있는 경우 추가해야합니다.
.withSchemaName("SCHEMA_NAME")
JdbcTemplate을 사용하는 방법은 확실하지 않지만 일반 JDBC를 사용하여 수행했습니다. JDBC를 사용할 수 있다면 몇 가지 코드를 게시 할 수 있습니다. –
@dsp_user : 코드에서 JDBC를 사용할 수 없습니다. –
글쎄, JDBCTemplate은 이미 내부적으로 사용하지만, 여러분에게 달려 있습니다. –