이번 포스트에서는 MyBatis가 가진 멋진 기능중 하나인 동적 쿼리 작성에 대해 살펴보자. 동적 쿼리는 상황에 따라 분기 처리를 통해 SQL을 동적으로 만드는 것이다.문자열 대체를 통한 쿼리의 재구성 ${}를 이용한 쿼리 작성이제까지 SQL을 작성하면서 사용했던 플레이스 홀더로 #을 사용했었는데 $도 사용할 수 있다. 이 둘의 차이를 살펴보자.구분#{ } : 바인딩 플레이스 홀더 $ { }: 문자열 치환 플레이스 홀더용도값 바인딩문자열 치환변경 가능성값만 대체 가능테이블명, 컬럼명 등 구조까지 변경 가능처리 방식PreparedStatement 사용Statement 사용SQL 인젝션 공격안전취약${}는 SQL 삽입 공격이 발생할 수 있기 때문에 사용을 지양하는 것이 좋지만 쿼리의 구조를 변경할 수 있다는..
[MyBatis] 04. 동적 쿼리
이번 포스트에서는 MyBatis가 가진 멋진 기능중 하나인 동적 쿼리 작성에 대해 살펴보자. 동적 쿼리는 상황에 따라 분기 처리를 통해 SQL을 동적으로 만드는 것이다.문자열 대체를 통한 쿼리의 재구성 ${}를 이용한 쿼리 작성이제까지 SQL을 작성하면서 사용했던 플레이스 홀더로 #을 사용했었는데 $도 사용할 수 있다. 이 둘의 차이를 살펴보자.구분#{ } : 바인딩 플레이스 홀더 $ { }: 문자열 치환 플레이스 홀더용도값 바인딩문자열 치환변경 가능성값만 대체 가능테이블명, 컬럼명 등 구조까지 변경 가능처리 방식PreparedStatement 사용Statement 사용SQL 인젝션 공격안전취약${}는 SQL 삽입 공격이 발생할 수 있기 때문에 사용을 지양하는 것이 좋지만 쿼리의 구조를 변경할 수 있다는..
2023.06.18