투케이2K

75. (spring/스프링) mybatis 에서 mssql 데이터베이스 프로시저 (procedure) 호출 및 메시지, 테이블 조회 확인 실시 본문

Spring

75. (spring/스프링) mybatis 에서 mssql 데이터베이스 프로시저 (procedure) 호출 및 메시지, 테이블 조회 확인 실시

투케이2K 2022. 10. 3. 21:09

[개발 환경 설정]

개발 툴 : inteli j

개발 언어 : spring

 
 
 

[Controller : 소스 코드]

    // TODO [SEARCH FAST] : [테스트 프로시저 MSG / TABLE 호출]
    @GetMapping("/USER_MSG_PROC")
    public String USER_MSG_PROC(@RequestParam Map<String, String> param){ // [쿼리 파람 방식]
        System.out.println("\n");
        System.out.println("================================================");
        System.out.println("[CLASS] : "+String.valueOf(CLASS_NAME));
        System.out.println("[METHOD] : "+String.valueOf("USER_MSG_PROC"));
        System.out.println("[INPUT] : "+String.valueOf(param.toString()));
        System.out.println("================================================");
        System.out.println("\n");


        /**
         * // -----------------------------------------
         * [호출 방법]
         * // -----------------------------------------
         * 1. 호출 방식 : GET
         * // -----------------------------------------
         * 2. 호출 방법 : http://localhost:7000/USER_MSG_PROC
         * // -----------------------------------------
         * 3. 리턴 데이터 :
         *
         * [[{T_NAME=홍길동, T_DEPT=조선, T_PHONE=010-1234-5678, T_HOBBY=축구, T_FAMILLY=2, T_SEX=M, T_MARRI=O, T_ADDR=A1-1, T_IDX=1, T_AGE=50, T_RANK=사원}], [{OUT_MSG=Y: 정상 처리 되었습니다. [STEP = 3] [2022-10-03 20:41:00]}]]
         * // -----------------------------------------
         * */


        // [초기 리턴 데이터 선언 실시]
        String returnData = "";



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

            // [service 호출 수행]
            List<List<Map<String, Object>>> serviceData = mssqlService.USER_MSG_PROC("홍길동", "50");

            // [리턴 데이터 삽입 실시]
            if (serviceData != null && serviceData.size()>0 && serviceData.isEmpty() == false){
                returnData = serviceData.toString();
            }
        }
        catch (Exception e){
            e.printStackTrace();
        }


        // [로그 출력 실시]
        //*
        System.out.println("\n");
        System.out.println("================================================");
        System.out.println("[CLASS] : "+String.valueOf(CLASS_NAME));
        System.out.println("[METHOD] : "+String.valueOf("USER_MSG_PROC"));
        System.out.println("[RESULT] : "+String.valueOf(returnData));
        System.out.println("================================================");
        System.out.println("\n");
        // */


        // [리턴 데이터 반환]
        return returnData.toString();
    }
 

[Service : 소스 코드]

    // TODO [SEARCH FAST] : [테스트 프로시저 MSG / TABLE 호출]
    public List<List<Map<String, Object>>> USER_MSG_PROC(String name, String age){

        // [mybatis xml 에서 설정한 인풋값 명칭에 맞게 데이터 가공 실시]
        Map map = new HashMap<>();
        map.put("IN_NAME", String.valueOf(name));
        map.put("IN_AGE", String.valueOf(age));


        // [map 인풋값 확인 실시]
        System.out.println("\n");
        System.out.println("================================================");
        System.out.println("[CLASS] : "+String.valueOf(CLASS_NAME));
        System.out.println("[METHOD] : "+String.valueOf("USER_MSG_PROC"));
        System.out.println("[INPUT] : "+String.valueOf(map.toString()));
        System.out.println("================================================");
        System.out.println("\n");


        // [mapper 인터페이스 호출 실시]
        List<List<Map<String, Object>>> returnData = mssqlMapper.USER_MSG_PROC(map);


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

[Mapper : 소스 코드]

    // TODO [SEARCH FAST] : [테스트 프로시저 MSG / TABLE 호출]
    List<List<Map<String, Object>>> USER_MSG_PROC(Map map);
 

[Mybatis : 소스 코드]

    <!--
    // =========================================
    // [SEARCH FAST] : [테스트 프로시저 MSG / TABLE 호출]
    // =========================================
    // [select id] [mapper 인터페이스 지정 메소드] : USER_MSG_PROC
    // =========================================
    // [resultMap] : 프로시저 수행 후 리턴 메시지 및 커서 테이블이 담길 맵
    // =========================================
    -->
    <resultMap id="USER_MSG_PROC_O_MSG" type="hashmap" />
    <resultMap id="USER_MSG_PROC_O_CURSOR" type="hashmap" />
    <select id="USER_MSG_PROC" parameterType="hashmap" resultMap="USER_MSG_PROC_O_MSG, USER_MSG_PROC_O_CURSOR" statementType="CALLABLE">
        <![CDATA[
        { call USER_MSG_PROC(
                #{IN_NAME},
                #{IN_AGE}
            )}
        ]]>
    </select>
 

[결과 출력]

 

 

반응형
Comments