💬 LANGUAGES/SQL, DB

[MyBatis] ${}로 동적 테이블명 사용하기

삶감 2022. 7. 27. 16:16

[MyBatis] ${}로 동적 테이블명 사용하기

테이블을 동적으로 할 때는 ${변수명} 사용
column = #{변수명} => column = '변수명'
FROM ${테이블명} => FROM 테이블명



❗❗ 주의 사항 ❗❗

${변수명}을 사용하는 경우, 변수명에 받아온 입력값을 그대로 사용하면 SQL 인젝션에 취약해진다

관련 이전 글
[웹 취약점] 4. 운영체제 명령 실행, 5. SQL Injection



따라서 보안이 중요하다면 가능한 사용하지 않는 편이 좋다고 한다...ㅜㅠ
나의 경우에는 <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