SyntaxHighlighter.all(); Mybatis 파라미터를 DTO 혹은 Map형식으로 받기 :: 게을러지고 싶어 부지런한 개발자

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} 작성하면, 쿼리는 실제홍길동으로 들어가서 실행된다. 

+ Recent posts