마이바티스에서 CLOB 저장 시에는
기본 parameterType 중 기본형 parameterType인 "map"으로 받아 처리하면 된다.
ibatis 때 처럼 paramterMap 으로 받아 한땀한땀 DTO를 맵핑한 다음 받아도 되지만,
생산성에서도 결코 효율적이지 않고,
parameterMap 자체가 Deprecated 된 옵션인데다가
일정 버퍼를 넘어가면 픽 죽어버린다.
모델(DTO / Bean / Vo / Pojo 등등...) 을 parameter로 보낼땐
"Bean 2 Map" 이라고 썼던 글을 참고(https://derveljunit.tistory.com/206)하여
bean 2 map 을 처리하면 된다.
이 글에서는 Jackson ObjectMapper를 통해 처리함.
xml 에서는 #{fieldName:VARCHAR} 와 같이 :VARCHAR 로 데이터형 인식을 시키면 된다.
# Service
@Service
public class TestServiceImpl implements TestSerivce {
@Autowired
private TestDAO dao;
@Override
public void registClobData(TestVo vo){
ObjectMapper om = new ObjectMapper();
HashMap<String, String> map = om.convertValue(vo, HashMap.class);
dao.insertClobTable(map);
}
}
# DAO
public interface TestDAO {
void insertClobTable(Map<String, String> reqMap);
}
# xml
...
<insert id="insertClobTable" parameterType="map">
INSERT INTO CLOB_TBL (
field_one,
field_two,
clob_field
) VALUES (
#{field1},
#{field2},
NVL(#{clobField:VARCHAR}, EMPTY_CLOB())
)
</insert>
...
※ NVL / EMPTY_CLOB() 는 오라클 함수입니다.
첨언 환영
'Java & Spring > iBatis & myBatis' 카테고리의 다른 글
[myBatis] sql 태그를 활용하여 오브젝트 조회와 리스트 조회 동시 처리 / 쿼리 재활용 (0) | 2019.06.03 |
---|---|
[ibatis ] boolean 값 isEqual 조회가 안될 때 확인해야하는 것 (1) | 2019.05.07 |
[iBatis] 동적 select와 시 문제해결 remapResults="true" (0) | 2017.04.11 |
[myBatis] 오라클 다건 list insert (0) | 2015.12.24 |
[iBatis] dynamic prepend (0) | 2015.10.20 |
WRITTEN BY