[우아한테크코스] 5월 10일 TIL

less than 1 minute read

[JDBC] row를 map으로 반환하기

upstation, downstation id를 Map<Long, Long>으로 반환해야했다.
더 좋은 방법이 있을 것 같은데 우선 아래와 같이 시도했다.

    public Map<Long, Long> findSectionsByLineId(long id) {
        String sql = "SELECT UP_STATION_ID, DOWN_STATION_ID FROM SECTION WHERE LINE_ID = ?";
        List<Map<String, Object>> resultList = jdbcTemplate.queryForList(sql, id);
        Map<Long, Long> sections = new HashMap<>();

        for(Map<String, Object> result : resultList) {
            System.out.println(result.get("UP_STATION_ID"));
            sections.put((Long)result.get("UP_STATION_ID"), (Long)result.get("DOWN_STATION_ID"));
        }
        return sections;
    }

[sql] not in의 사용

SELECT UP_STATION_ID FROM SECTION WHERE LINE_ID = ? AND UP_STATION_ID NOT IN (SELECT DOWN_STATION_ID FROM SECTION WHERE LINE_ID = ?)
으로 원하는 값을 도출할 수 있다.