Notice
Recent Posts
Recent Comments
Link
투케이2K
28. (spring/스프링) mybatis 오라클 프로시저 호출 및 다중 아웃 out 메시지, 커서 cursor 데이터 확인 실시 본문
Spring
28. (spring/스프링) mybatis 오라클 프로시저 호출 및 다중 아웃 out 메시지, 커서 cursor 데이터 확인 실시
투케이2K 2021. 9. 9. 08:03[개발 환경 설정]
개발 툴 : inteli j
개발 언어 : spring
[소스코드 (mybatis) : mappers >> DB_Mapper.xml]
<!-- 프로시저 호출 : input / output [msg : cursor] : hashmap 형태로 받음 -->
<resultMap id="PRO_TEST_MAP" type="hashmap" />
<select id="PRO_TEST_PROCEDURE" parameterType="hashmap" statementType="CALLABLE">
<![CDATA[
{ call PRO_TEST (
#{input_number},
#{input_name},
#{out_msg_message, mode=OUT, jdbcType=VARCHAR, javaType=string},
#{out_msg_title, mode=OUT, jdbcType=VARCHAR, javaType=string},
#{out_msg_date, mode=OUT, jdbcType=VARCHAR, javaType=string},
#{out_cursor_table, mode=OUT, jdbcType=CURSOR, javaType=ResultSet, resultMap=PRO_TEST_MAP}
)}
]]>
</select>
[소스코드 (인터페이스) : mapper >> DB_Mapper]
// [DBMapper.xml 쿼리에서 선언한 변수 개수 및 타입에 맞게 파라미터 선언]
void PRO_TEST_PROCEDURE(Map map); // [void 설정]
[소스코드 (서비스) : service >> DB_Service]
// [DBMapper 인터페이스 지정 >> Controller 리턴 값 지정]
public Map PRO_TEST_PROCEDURE(String number, String name) {
Map map = new HashMap<>();
map.put("input_number", number); // TODO [인풋 값]
map.put("input_name", name); // TODO [인풋 값]
dbMapper.PRO_TEST_PROCEDURE(map); // TODO [프로시저 호출 결과가 맵에 담김]
return map; // 컨트롤러에 리턴 실시
}
[소스코드 (컨트롤러) : controller >> DB_API_Controller]
// [post body json : Map 방식]
// [경로 지정 : http://localhost:7000/PRO_TEST_PROCEDURE]
// [json : {"number" : "1", "name" : "투케이"} ]
@PostMapping("/PRO_TEST_PROCEDURE")
public String PRO_TEST_PROCEDURE(@RequestBody Map<String, String> param) {
System.out.println("\n");
System.out.println("=======================================");
System.out.println("[DB_API_Controller] : [PRO_TEST_PROCEDURE] : [start]");
System.out.println("[request keySet] : " + String.valueOf(param.keySet()));
System.out.println("[request number] : " + String.valueOf(param.get("number")));
System.out.println("[request name] : " + String.valueOf(param.get("name")));
System.out.println("=======================================");
System.out.println("\n");
// [API 호출 인풋으로 들어온 데이터 변수에 담음]
String number = String.valueOf(param.get("number"));
String name = String.valueOf(param.get("name"));
// [서비스 호출 및 DB 프로시저 리턴 값 받음]
Map map = dbService.PRO_TEST_PROCEDURE(number, name); // 인풋값 삽입 실시
String out_message = String.valueOf(map.get("out_msg_message")); // 아웃 메시지 가져온다
String out_title = String.valueOf(map.get("out_msg_title")); // 아웃 메시지 가져온다
String out_date = String.valueOf(map.get("out_msg_date")); // 아웃 메시지 가져온다
String out_cursor = String.valueOf(map.get("out_cursor_table")); // 아웃 커서 가져온다
// [api 결과 반환]
return "";
}
반응형
'Spring' 카테고리의 다른 글
Comments