Notice
Recent Posts
Recent Comments
Link
투케이2K
39. (spring/스프링) mybatis 에서 mysql 프로시저 호출 및 리턴 OUT 메시지 , SELECT 테이블 결과 확인 실시 본문
Spring
39. (spring/스프링) mybatis 에서 mysql 프로시저 호출 및 리턴 OUT 메시지 , SELECT 테이블 결과 확인 실시
투케이2K 2022. 6. 6. 15:02[개발 환경 설정]
개발 툴 : inteli j
개발 언어 : spring
[컨트롤러 : DB_Maria_Api_Controller : 소스 코드]
import com.test.mobile_sm_univ.B_Service.DB_Maria_Service.DB_Maria_Api_Service;
import com.test.mobile_sm_univ.util.C_Util;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.configurationprocessor.json.JSONObject;
import org.springframework.web.bind.annotation.*;
import java.util.List;
import java.util.Map;
// TODO [크로스 도메인 접속 허용 설정]
@CrossOrigin("*")
// TODO [RestController / Api 처리]
@RestController
public class DB_Maria_Api_Controller {
/**
* // -----------------------------------------
* TODO [클래스 설명]
* // -----------------------------------------
* 1. 데이터베이스 접근 및 컨트롤러 클래스
* // -----------------------------------------
* 2. 사용자가 api 호출을 통해서 접근 수행
* // -----------------------------------------
* 3. service 클래스 호출 및 로직 연결 실시
* // -----------------------------------------
* */
/**
* // -----------------------------------------
* // TODO [빠른 로직 찾기 : 주석 로직 찾기]
* // -----------------------------------------
* // [SEARCH FAST] : [테스트 사용자 정보 요청]
* // -----------------------------------------
* */
// TODO [Autowire 설정]
@Autowired
private DB_Maria_Api_Service db_maria_api_service;
// TODO [전역 변수 선언 실시]
private static final String CLASS_NAME = "DB_Maria_Api_Controller";
// TODO [SEARCH FAST] : [테스트 사용자 정보 요청]
@GetMapping("/testUser")
public String testUser(@RequestParam Map<String, String> param){ // [쿼리 파람 방식]
//public String testUser(@RequestBody Map<String, String> param){ // [body 방식]
System.out.println("\n");
System.out.println("================================================");
System.out.println("[CLASS] : "+String.valueOf(CLASS_NAME));
System.out.println("[METHOD] : "+String.valueOf("testUser"));
System.out.println("[INPUT] : "+String.valueOf(param.toString()));
System.out.println("================================================");
System.out.println("\n");
/**
* // -----------------------------------------
* [호출 방법]
* // -----------------------------------------
* 1. 호출 방식 : GET
* // -----------------------------------------
* 2. 호출 방법 : http://localhost:7000/testUser
* // -----------------------------------------
* 3. 리턴 데이터 :
* Y : SUCCESS : M_DEGUB : [2]
* // -----------------------------------------
* */
// [service 호출 수행]
List<Map<String, Object>> returnData = db_maria_api_service.PRO_SEL_TEST_USER("백제");
// [리턴 받은 map 데이터 널 체크 실시]
try {
if (returnData != null){
System.out.println("\n");
System.out.println("================================================");
System.out.println("[CLASS] : "+String.valueOf(CLASS_NAME));
System.out.println("[METHOD] : "+String.valueOf("testUser"));
System.out.println("[RESULT] : "+String.valueOf(returnData.toString()));
System.out.println("================================================");
System.out.println("\n");
// [리턴 데이터 반환]
return returnData.toString();
}
}
catch (Exception e){
e.printStackTrace();
}
// [리턴 데이터 반환]
return "";
}
} // TODO [클래스 종료]
[서비스 : DB_Maria_Api_Service : 소스 코드]
import com.test.mobile_sm_univ.C_Mapper.DB_Mapper_Maria.DB_Maria_Api_Mapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
// TODO [서비스 어노테이션]
@Service
public class DB_Maria_Api_Service {
/**
* // -----------------------------------------
* TODO [클래스 설명]
* // -----------------------------------------
* 1. 데이터베이스 접근 및 서비스 클래스
* // -----------------------------------------
* 2. mapper 인터페이스 메소드 호출 수행 실시
* // -----------------------------------------
* */
/**
* // -----------------------------------------
* // TODO [빠른 로직 찾기 : 주석 로직 찾기]
* // -----------------------------------------
* // [SEARCH FAST] : [테스트 사용자 정보 요청]
* // -----------------------------------------
* */
// TODO [Autowire 설정]
@Autowired
private DB_Maria_Api_Mapper db_maria_api_mapper;
private static final String CLASS_NAME = "DB_Maria_Api_Service";
// TODO [SEARCH FAST] : [테스트 사용자 정보 요청]
public List<Map<String, Object>> PRO_SEL_TEST_USER(String dept){
// [mybatis xml 에서 설정한 인풋값 명칭에 맞게 데이터 가공 실시]
Map map = new HashMap<>();
map.put("I_DEPT_NAME", String.valueOf(dept));
// [map 인풋값 확인 실시]
System.out.println("\n");
System.out.println("================================================");
System.out.println("[CLASS] : "+String.valueOf(CLASS_NAME));
System.out.println("[METHOD] : "+String.valueOf("PRO_SEL_TEST_USER"));
System.out.println("[INPUT] : "+String.valueOf(map.toString()));
System.out.println("================================================");
System.out.println("\n");
// [mapper 인터페이스 호출 실시]
List<Map<String, Object>> returnData = db_maria_api_mapper.PRO_SEL_TEST_USER(map);
// [프로시저 수행 후 리턴 값 반환]
return returnData;
}
} // TODO [클래스 종료]
[매퍼 : DB_Maria_Api_Mapper : 소스 코드]
import org.apache.ibatis.annotations.Mapper;
import java.util.List;
import java.util.Map;
// TODO [매퍼 어노테이션]
@Mapper
public interface DB_Maria_Api_Mapper {
/**
* // -----------------------------------------
* TODO [클래스 설명]
* // -----------------------------------------
* 1. 데이터베이스 접근 및 매퍼 인터페이스
* // -----------------------------------------
* 2. 데이터베이스 쿼리문 수행 xml 리턴 값 받음
* // -----------------------------------------
* */
/**
* // -----------------------------------------
* // TODO [빠른 로직 찾기 : 주석 로직 찾기]
* // -----------------------------------------
* // [SEARCH FAST] : [테스트 사용자 정보 요청]
* // -----------------------------------------
* */
// TODO [SEARCH FAST] : [테스트 사용자 정보 요청]
List<Map<String, Object>> PRO_SEL_TEST_USER(Map map); // [프로시저]
} // TODO [클래스 종료]
[mybatis : DB_Maria_Api_Mybatis : 소스 코드]
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- mapper 인터페이스 지정 -->
<mapper namespace="com.test.mobile_sm_univ.C_Mapper.DB_Mapper_Maria.DB_Maria_Api_Mapper">
<!--
// =========================================
// [파일 설명]
// =========================================
1. DB 접근 및 쿼리, 프로시저, 함수 호출 수행 파일
// =========================================
2. mapper 리턴 데이터를 받을 인터페이스 설정 필요
// =========================================
-->
<!--
// =========================================
// [빠른 로직 찾기 : 주석 로직 찾기]
// =========================================
// [SEARCH FAST] : [테스트 사용자 정보 요청]
// =========================================
-->
<!--
// =========================================
// [SEARCH FAST] : [테스트 사용자 정보 요청]
// =========================================
// [select id] [mapper 인터페이스 지정 메소드] : PRO_SEL_TEST_USER
// =========================================
// [resultMap] : 프로시저 수행 후 리턴 메시지 및 커서 테이블이 담길 맵
// =========================================
-->
<resultMap id="PRO_SEL_TEST_USER_RESULT_O_MSG" type="hashmap" />
<resultMap id="PRO_SEL_TEST_USER_RESULT_O_CURSOR" type="hashmap" />
<select id="PRO_SEL_TEST_USER" parameterType="hashmap" resultMap="PRO_SEL_TEST_USER_RESULT_O_MSG, PRO_SEL_TEST_USER_RESULT_O_CURSOR" statementType="CALLABLE">
<![CDATA[
{ call PRO_SEL_TEST_USER(
#{I_DEPT_NAME, mode=IN, jdbcType=VARCHAR, javaType=string},
#{O_MSG}
)}
]]>
</select>
[DB Connection : application.yml : 소스 코드]
# [Maria DB]
maria:
driver-class-name: org.mariadb.jdbc.Driver
jdbc-url: jdbc:mariadb://3.44.128.63:3306/test?characterEncoding=UTF-8&serverTimezone=UTC&characterEncoding=utf8&noAccessToProcedureBodies=true
username: test
password: test@1234
hikari:
maximum-pool-size: 20
connection-timeout: 30000
[결과 출력]
반응형
'Spring' 카테고리의 다른 글
Comments