투케이2K

62. (spring/스프링) mysql 프로시저 호출 시 OUT 아웃 메시지 널 (null) 반환 이슈 해결 본문

Spring

62. (spring/스프링) mysql 프로시저 호출 시 OUT 아웃 메시지 널 (null) 반환 이슈 해결

투케이2K 2022. 7. 8. 14:46

[개발 환경 설정]

개발 툴 : inteli j

개발 언어 : spring

 

[컨트롤러 : DB_Maria_Api_Controller : 소스 코드]

            // [Mybatis.xml 에서 지정한 파라미터 명칭과 같아야함]
            Map inputMap = new HashMap();
            inputMap.put(S_FinalData.PARAM_KEY_ID, ID.trim());
            inputMap.put(S_FinalData.PARAM_KEY_PASS, PASS.trim());
            inputMap.put(S_FinalData.PARAM_KEY_MOCO, MOCO.trim());
            inputMap.put(S_FinalData.PARAM_KEY_PLAT, PLAT.trim());


            // [서비스 호출 수행 실시]
            List<List<Map<String, Object>>> serviceData = db_maria_api_service.PRO_INS_LOGIN(inputMap);

            System.out.println("\n");
            System.out.println("================================================");
            System.out.println("[CLASS] : "+String.valueOf(CLASS_NAME));
            System.out.println("[METHOD] : "+String.valueOf("PRO_INS_LOGIN"));
            System.out.println("[SERVICE DATA] : "+String.valueOf(serviceData));
            System.out.println("================================================");
            System.out.println("\n");
 

[서비스 : DB_Maria_Api_Service : 소스 코드]

    // TODO [SEARCH FAST] : [PRO_INS_LOGIN] : [디바이스 중복 관계 없이 로그인 수행]
    public List<List<Map<String, Object>>> PRO_INS_LOGIN(Map inputData){

        // [리턴 반환 변수 선언 실시]
        List<List<Map<String, Object>>> returnData = null;

        // [로직 처리 실시]
        try {

            // [인풋 데이터 널 체크 수행 실시]
            if(C_Util.mapNotNull(inputData) == true){

                // [mapper 인터페이스 호출 실시]
                returnData = db_maria_api_mapper.PRO_INS_LOGIN(inputData);
            }
            else {
                // [로그 출력 실시]
                System.out.println("\n");
                System.out.println("================================================");
                System.out.println("[CLASS] : "+String.valueOf(CLASS_NAME));
                System.out.println("[METHOD] : "+String.valueOf("PRO_INS_LOGIN"));
                System.out.println("[ERROR] : "+String.valueOf("Input Data Is Null"));
                System.out.println("================================================");
                System.out.println("\n");
            }
        }
        catch (Exception e){
            e.printStackTrace();
        }

        // [프로시저 수행 후 리턴 값 반환]
        return returnData;
    }
 

[매퍼 : DB_Maria_Api_Mapper : 소스 코드]

    // TODO [SEARCH FAST] : [PRO_INS_LOGIN] : [디바이스 중복 관계 없이 로그인 수행]
    List<List<Map<String, Object>>> PRO_INS_LOGIN(Map map);
 

[mybatis : DB_Maria_Api_Mybatis : 소스 코드]

    <!--
    // =========================================
    // [SEARCH FAST] : [PRO_INS_LOGIN] : [디바이스 중복 관계 없이 로그인 수행]
    // =========================================
    // [select id] [mapper 인터페이스 지정 메소드] : PRO_INS_LOGIN
    // =========================================
    -->
    <resultMap id="PRO_INS_LOGIN_O_MSG" type="hashmap" />
    <resultMap id="PRO_INS_LOGIN_O_CURSOR" type="hashmap" />
    <select id="PRO_INS_LOGIN" parameterType="hashmap" resultMap="PRO_INS_LOGIN_O_MSG, PRO_INS_LOGIN_O_CURSOR" statementType="CALLABLE">
        <![CDATA[
        { call PRO_INS_LOGIN(
                #{ID,      mode=IN,    jdbcType=VARCHAR,    javaType=string},
                #{PASS,    mode=IN,    jdbcType=VARCHAR,    javaType=string},
                #{MOCO,    mode=IN,    jdbcType=VARCHAR,    javaType=string},
                #{PLAT,    mode=IN,    jdbcType=VARCHAR,    javaType=string}
            )}
        ]]>
    </select>
 

[DB Connection : application.yml : 소스 코드]

    # [Maria DB]
    maria:
      driver-class-name: org.mariadb.jdbc.Driver
      jdbc-url: jdbc:mariadb://3.54.138.43:3306/test?characterEncoding=UTF-8&serverTimezone=UTC&characterEncoding=utf8&noAccessToProcedureBodies=true
      username: test
      password: test@1234
      hikari:
        maximum-pool-size: 20
        connection-timeout: 30000
 
 
반응형
Comments