728x90
✅ 최초 Mapper
최초 Mapper를 작성할 때는 아무런 생각 없이 Map 형식으로 가져오려고 시도하였다.
⏹️ imageMapper.xml
<select id="ecmAnnotationInfo" parameterType="Map" resultType="Map">
select
MASK_INFO,
from
TB_ELB_MASK_B
where
EID = #{EID}
</select>
위와 같이 쿼리를 작성하였더니 오류는 나지 않지만 데이터를 제대로 가져오지 못하였다.
✅ ResultMap의 사용
그래서 두 번째로 resultMap을 통해 Clob을 String으로 변환하는 과정을 만들었다.
⏹️ imageMapper.xml
<resultMap id="anno_clob" type="Map">
<result property="MASK_INFO" column="MASK_INFO" jdbcType="CLOB" javaType="java.lang.String" />
</resultMap>
<select id="ecmAnnotationInfo" parameterType="Map" resultMap="anno_clob">
select
MASK_INFO,
from
TB_ELB_MASK_B
where
EID = #{EID}
</select>
위와 같이 resultMap에서 CLOB을 String으로 변환하고
실제 select 쿼리에서는 reulstType이 아니라 resultMap으로 지정하면 된다...고 한다.
하지만 어떤 부분이 잘못된 건지 오류는 없지만 데이터를 제대로 받아오지 못했다.
✅ VO의 사용
그래서 결국 사용한 방법은 VO를 활용한 방식이다.
⏹️ ClobVO.java
package egovframework.CNPECMJava.ecm;
import lombok.Data;
@Data
public class ClobVO {
private String MASK_INFO;
}
⏹️ imageMapper.xml
<resultMap id="anno_clob" type="egovframework.CNPECMJava.ecm.ClobVO">
<result property="MASK_INFO" column="MASK_INFO" jdbcType="CLOB" javaType="java.lang.String" />
</resultMap>
<select id="ecmAnnotationInfo" parameterType="Map" resultMap="anno_clob">
select
MASK_INFO,
from
TB_ELB_MASK_B
where
EID = #{EID}
</select>
위처럼 select 쿼리는 resultMap을 통하고 resultMap은 VO를 통해서 나가면
정상적으로 데이터가 출력이 된다.
✅ 끝
해당 문제를 해결하기 위해서 여러 블로그를 둘러봤었는데 머리 아프기 싫으면 VO 사용하라는 글을 봤다.
어떻게든 Map으로 처리하려고 했는데 일찌감치 VO를 활용할 걸 그랬다.
'Java' 카테고리의 다른 글
Java 문자 + 숫자로 이루어진 문자열 정렬 (0) | 2023.03.22 |
---|