[MyBatis] ${}로 동적 테이블명 사용하기
[MyBatis] ${}로 동적 테이블명 사용하기
테이블을 동적으로 할 때는 ${변수명}
사용column = #{변수명}
=> column = '변수명'
FROM ${테이블명}
=> FROM 테이블명
❗❗ 주의 사항 ❗❗
${변수명}
을 사용하는 경우, 변수명에 받아온 입력값을 그대로 사용하면 SQL 인젝션에 취약해진다
따라서 보안이 중요하다면 가능한 사용하지 않는 편이 좋다고 한다...ㅜㅠ
나의 경우에는 <if>
태그를 사용해서 분기처리로 해결했다
이전
<update id="updateTables" parameterType="PeopleVO">
UPDATE TB_${tb_type}
SET USE_YN = 'Y',
USE_DT = SYSDATE
WHERE SQ_${tb_type} = #{sq_user}
</update>
이후
<update id="updateTables" parameterType="PeopleVO">
<if test="tb_type == 'PROFESSOR'">
UPDATE TB_PROFESSOR
SET USE_YN = 'Y',
USE_DT = SYSDATE
WHERE SQ_PROFESSOR = #{sq_user}
</if>
<if test="tb_type == 'STUDENT'">
UPDATE TB_STUDENT
SET USE_YN = 'Y',
USE_DT = SYSDATE
WHERE SQ_STUDENT = #{sq_user}
</if>
</update>
참고
728x90
728x90