반응형


마이바티스에서 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() 는 오라클 함수입니다.




첨언 환영

반응형

WRITTEN BY
데르벨준

,