Mybatis에서 파라미터를 DTO 혹은 Map 형식으로 받는 방법과 Map<String, Object> 형식으로 받는 방법을 알아보자.
1. 파라미터를 DTO 형식으로 받기
// DTO 클래스
@Data
public class MetaMngRequestDTO {
private Map<String, Object> data;
private String id;
}
// Service
public void updateMetaData(MetaMngRequestDTO dto) {
testDAO.updateTest(dto);
}
// DAO Interface
void updateTest(MetaMngRequestDTO dto);
// Mapper XML
<update id="updateTest" parameterType="com.test.MetaMngRequestDTO">
update TEST_TABLE
set
ITM_SEQ = #{data.ITM_SEQ},
TEXT = #{data.TEXT}
where SID = #{id}
</update>
쿼리쪽에 parameterType="넘겨주는 DTO 경로 및 이름"를 추가해야하며, DTO의 필드 중 String 타입 같은 경우는 #{id}로 곧장 쓸 수 있지만 Map형식일 경우는 #{필드명.key이름}으로 써준다 (ex. #{data.TEXT} )
(parameterType을 생략할 수 있으며, 그럴 경우 바로 dto의 필드명을 쿼리에 #{id} 이런식으로 곧장 사용 가능.
2. 파라미터를 Map형식으로 받기
// Service 클래스
public void insertTest(Map<String, Object> columns) {
testDAO.insertItemYnSync(columns);
}
// DAO Interface
void insertTest(Map<String, Object> dataValues);
// Mapper XML
<insert id="insertTest" parameterType="hashmap">
insert into LT_REG_META_ITM_YN
(ITM_SEQ, WRITER, CONTENTS)
values
(#{ITM_SEQ}, #{WRITER}, #{CONTENTS})
</insert>
이번에는 parameterType=“hashmap”을 추가!
그리고 #{맵의 키}를 써주면 해당 키에 맞는 데이터가 들어간다.
예를 들면
map에서 (“WRITER”, ”홍길동”) 이렇게 key-value가 있다고 치자. 그리곤 쿼리 쪽에서 #{WRITER}로 작성하면, 쿼리는 실제 ‘홍길동’으로 들어가서 실행된다.
'Spring' 카테고리의 다른 글
Spring Boot에 Let's Encrypt SSL 적용하기 (1) | 2021.12.28 |
---|---|
log4j 취약점 해결 (0) | 2021.12.13 |
스프링 부트 & 타임리프로 개발 시 캐시 먹히는 문제 (0) | 2021.03.11 |
스프링(Spring)에서 세션(Session) 적용하기 (0) | 2021.03.11 |
[스프링] redirect 시 param(파라미터)값 넘기기 (0) | 2020.11.18 |