BLOG ARTICLE parameterMap | 1 ARTICLE FOUND

  1. 2011.08.23 [iBATIS] 글쓰기 작업할때 DB에 자바빈을 이용해서 값 편하게 넣기


DB에 값 을 넣을때 INSERT INTO 를 이용해서 값을 넣을때

sqlMap 에서 넣을려면 ,

<insert id="insertBbs" parameterClass="bbsvo">
<selectKey keyProperty="idx" resultClass="int">
SELECT BBS_NEW_IDX.NEXTVAL as idx FROM DUAL
</selectKey>
INSERT INTO BBS 
(idx, subject, writer, writedate, content, s_file, pwd, readHit, ip,re_level)
VALUES 
(#idx#, #subject#, #writer#, sysdate, #content#, #s_file#, #pwd#, #readHit#, #ip#,#re_level#)
</insert>


위 처럼 이런 코드가 있다고 치면, 지저분하지 않은가?

이런 작업이 많아지면? 추가해야되면? 유지보수가 지랄같아진다.


이런걸 편하게 하기위해서 준비된게 있다!!            

<parameterMap>

바로 코드를 보자.

<typeAlias alias="article" type="Struts_BBS.ItemBean"/>

<parameterMap id="setContent" class="article">

    <parameter property="id"             jdbcType="VARCHAR"/>    // 1

<parameter property="title"           jdbcType="VARCHAR"/>   //  2
<parameter property="body"         jdbcType="VARCHAR"/>      ....
<parameter property="password"  jdbcType="VARCHAR"/>
<parameter property="count"        jdbcType="NUMBER"/>
<parameter property="depth"        jdbcType="NUMBER"/>
<parameter property="fileName"   jdbcType="VARCHAR"/>  // 7
</parameterMap>


딱 봐도 그냥 알 것 같지 않은가?

프로퍼티는 자바빈의 변수명이고, jdbcType 은 컬럼타입이다.

저런식으로 해주면 "setContent"를 parameterMap 에서 부르면 알아서 매핑되어서 순서대로 

자바코드에서 preparedStatement 를 이용해서 .setString(index, "value") 하듯이

자기가 알아서 파라미터가 코딩된 순서대로 그냥 들어간다. 



그럼 어떻게 불러쓰는지 함보자.

<insert id="setContent" parameterMap="setContent" >
INSERT INTO margo 
VALUES(margo_sequence.NEXTVAL,?,?,?,?,?,?,sysdate, ?)
</insert>


맨위에 그 지저분한 코드가 이렇게 변했다...

VALUES 안에 '?' 들에 차례로 프로퍼티 값이 들어가서 글이 써지게 되겠음.



머 호출 코드는 그냥
(ItemBean)this.queryForObject("getContent", new Integer(contentNum)); 












 
YOUR COMMENT IS THE CRITICAL SUCCESS FACTOR FOR THE QUALITY OF BLOG POST