My batis Mapper.xml #{} , ${}문법 관련

HUGO·2022년 9월 26일
0
 #{값} => INSERT INTO 테이블 VALUES( );
 
 ${테이블 OR 컬럼명} 값 => SELECT * FROM 테이블명 WHERE NO LIKE '%' || 'a' || '%'
 ${테이블 OR 컬럼명} 값 => SELECT * FROM 테이블명 WHERE TITLE LIKE '%' || 'a' || '%'
 ${테이블 OR 컬럼명} 값 => SELECT * FROM 테이블명 WHERE CONTENT LIKE '%' || 'a' || '%'
 이걸 다 적을 수 없기 때문에
 ${테이블 OR 컬럼명} 값 => SELECT * FROM ${tbl} WHERE ${col} LIKE '%' || 'a' || '%'
 이렇게 쓸수가 있음

 SELECT '${title}' TITLE, '${writer}' WRITER FROM DUAL 

-->

 <insert id="insertBoardBatch" parameterType="list">
      <foreach collection="list" item="obj" separator="; ">
           INSERT INTO BOARDTBL(NO, TITLE, CONTENT, WRITER, HIT, REGDATE )
           VALUES (SEQ_BOARDTBL_NO.NEXTVAL, #{obj.title}, #{obj.content}, #{obj.writer}, #{obj.hit}, CURRENT_DATE)
      </foreach>
      <!-- h2 함수 생성 불가, UNION ALL 동작 안됨-->
      <!-- INSERT ALL (시퀀스가 없을경우, 함수를 생성)-->
      <!-- UNION ALL(시퀀스가 있는 경우)-->
 </insert>

 <update id="updateBoardBatch" parameterType="list">
      UPDATE BOARDTBL SET
           TITLE = (CASE
                <foreach collection="list" item="obj" separator=" ">
                     WHEN NO=#{obj.no} THEN #{obj.title}
                </foreach>
           END), 
           WRITER = (CASE
                <foreach collection="list" item="obj" separator=" ">
                     WHEN NO=#{obj.no} THEN #{obj.writer}
                </foreach>
           END), 
           HIT = (CASE
                <foreach collection="list" item="obj" separator=" ">
                     WHEN NO=#{obj.no} THEN #{obj.hit}
                </foreach>
           END)
      WHERE NO IN (
           <foreach collection="list" item="obj" separator=", ">
                #{obj.no}
           </foreach>
      )
 </update>


 <delete id="deleteBoardBatch" parameterType="list">
      DELETE FROM BOARDTBL WHERE NO IN (
           <foreach collection="list" item="tmp" separator=", ">
                #{tmp}
           </foreach>
      )
 </delete>
profile
갓 신생아 개발자 이야기

0개의 댓글