[Java, 자바] Mybatis Map foreach로 반복하기프로그래밍/Java2024. 9. 10. 22:55
Table of Contents
728x90
Spring에서 Mybatis 사용 중 요청 받은 데이터를 Map으로 받아 로직을 수행하는 중 아래와 같은 오류가 발생했다 !
unable to make field private final byte[] java.lang.string.value accessible: module java.base does not "opens java.lang" to unnamed module
위 에러를 확인 해보면 java.lang 패키지에 접근할 수 없어 발생하는 오류라고한다.
해결 방법을 보니 openJDK 버전 문제일 수도 있고 환경 변수에 문제가 있을 수 있다고 해서 여러가지 방법을 시도해봤지만 ! 여전히 해결되지 않아 Mybatis에서 Map을 사용하는 방법을 다시 한번 찾아보기로했다.
📄기존 코드
<insert id="**" parameterType="**">
INSERT INTO tableName (columnName,
columnName)
VALUES
<foreach collection="mapList.entrySet()" item="entry" separator=",">
(#{entry.key},
#{entry.value})
</foreach>
</insert>
(id, type, 테이블명, 컬럼명 등은 보안 이슈로 가려 놓았습니다 !)
VO클래스 필드에 HashMap<String, String> 형태로 선언해 놓은 상태인 점 참고 부탁드리겠습니다.
📝수정 코드
<insert id="**" parameterType="**">
INSERT INTO tableName (columnName,
columnName)
VALUES
<foreach collection="mapList.entrySet()" index="key" item="value" separator=",">
(#{key},
#{value})
</foreach>
</insert>
결론부터 말하자면 위와 같이 작성을 했더니 정상적으로 작동됬습니다 !!!
index와 item으로 분리하여 값을 추출했고, index가 제가 생각했던 0부터 시작하는 index가 아닌 Map에 저장되어 있는 Key값이 반환되고 item은 Key에 해당하는 Value가 반환되었습니다.
정리
Mybatis에서 Parameter를 Map하나만 받아서 사용할 땐 ParameterType에 Map을 명시해서 사용하면 되지만 부득이하게 Map이 어느 내부에 포함되어있어 사용할 땐 index와 item으로 key, value를 분리해서 사용하자 !
'프로그래밍 > Java' 카테고리의 다른 글
[Java, Spring] Linux 파일 서버 경로 연결하기 (5) | 2024.10.01 |
---|---|
[Spring, Swagger] Swagger 적용하기 및 기본 경로 변경하기 (2) | 2024.09.21 |
[Java, Spring] @ControllerAdvice, @RestControllerAdvice란 ? (5) | 2024.09.01 |
[Java, 자바] 예외 처리란 ? (0) | 2024.07.31 |
[Java, 자바] 중첩 클래스와 내부 클래란 ? (1) | 2024.07.29 |
@차나니 :: 차나니의 개발일지
개발의 모든 것 !
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!