투케이2K

85. (spring/스프링) mybatis 에서 mssql 데이터베이스 group 그룹 min, max, sum, avg 집계 함수 조회 실시 본문

Spring

85. (spring/스프링) mybatis 에서 mssql 데이터베이스 group 그룹 min, max, sum, avg 집계 함수 조회 실시

투케이2K 2022. 10. 4. 13:22

[개발 환경 설정]

개발 툴 : inteli j

개발 언어 : spring

 

[Controller : 소스 코드]

    // TODO [SEARCH FAST] : [테스트 GROUP FUNCTION 조회]
    @GetMapping("/TEST_GROUP_FUNCTION")
    public String TEST_GROUP_FUNCTION(@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("TEST_GROUP_FUNCTION"));
        System.out.println("[INPUT] : "+String.valueOf(param.toString()));
        System.out.println("================================================");
        System.out.println("\n");


        /**
         * // -----------------------------------------
         * [호출 방법]
         * // -----------------------------------------
         * 1. 호출 방식 : GET
         * // -----------------------------------------
         * 2. 호출 방법 : http://localhost:7000/TEST_GROUP_FUNCTION
         * // -----------------------------------------
         * 3. 리턴 데이터 :
         *
         *   select group by 그룹함수 조회 수행 쿼리문 데이터
         * // -----------------------------------------
         * */

        // [select where in 조건 조회를 위해 배열에 in 조건 삽입 실시]
        ArrayList DEPT_LIST = new ArrayList();
        DEPT_LIST.add("고구려");
        DEPT_LIST.add("백제");
        DEPT_LIST.add("신라");


        // [인풋 hashmap 에 추가 실시]
        Map inputMap = new HashMap();
        inputMap.put("DEPT_LIST", DEPT_LIST);


        // [service 호출 수행]
        List<Map<String, Object>> returnData = mssqlService.TEST_GROUP_FUNCTION(inputMap);


        // [리턴 받은 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("TEST_GROUP_FUNCTION"));
                System.out.println("[RESULT] : "+String.valueOf(returnData.toString()));
                System.out.println("================================================");
                System.out.println("\n");

                // [리턴 데이터 반환]
                return returnData.toString();
            }
        }
        catch (Exception e){
            e.printStackTrace();
        }


        // [리턴 데이터 반환]
        return "";
    }
 

[Service : 소스 코드]

    // TODO [SEARCH FAST] : [테스트 GROUP FUNCTION 조회]
    public List<Map<String, Object>> TEST_GROUP_FUNCTION(Map map){
        System.out.println("\n");
        System.out.println("================================================");
        System.out.println("[CLASS] : "+String.valueOf(CLASS_NAME));
        System.out.println("[METHOD] : "+String.valueOf("TEST_GROUP_FUNCTION"));
        System.out.println("[INPUT] : "+String.valueOf(map.toString()));
        System.out.println("================================================");
        System.out.println("\n");


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


        // [리턴 값 반환]
        return returnData;
    }
 

[Mapper : 소스 코드]

    // TODO [SEARCH FAST] : [테스트 GROUP FUNCTION 조회]
    List<Map<String, Object>> TEST_GROUP_FUNCTION(Map map);
 

[Mybatis : 소스 코드]

    <!--
    // =========================================
    // [SEARCH FAST] : [테스트 GROUP FUNCTION 조회]
    // =========================================
    // [select id] [mapper 인터페이스 지정 메소드] : TEST_GROUP_FUNCTION
    // =========================================
    -->
    <select id="TEST_GROUP_FUNCTION" parameterType="hashmap" resultType="hashmap">
        select t_dept as 부서,
               count(t_dept) as 부서인원,
               min(cast(t_age as int)) as 최소나이,
               max(cast(t_age as int)) as 최대나이,
               sum(cast(t_age as int)) as 나이합계,
               avg(cast(t_age as int)) as 나이평균
        from test_user
        where T_DEPT in
        <foreach collection="DEPT_LIST" item="DEPT" separator="," open="(" close=")">
            #{DEPT}
        </foreach>
        group by t_dept
    </select>
 

[결과 출력]

 

 

반응형
Comments