IT 소스/MyBatis

[MyBatis] <bind> - 변수를 설정 및 사용하기

한량이야기 2024. 2. 15. 16:41
반응형

안녕하세요. 경제적, 시간적 자유를 꿈꾸는 한량입니다.

bind tag 이미지

 

<bind> 태그는 특정 값을 변수에 할당하고 

나중에 그 값을 다시 사용하는 용도로 활용됩니다. 

주로 SQL 쿼리 내에서 변수를 초기화하거나 연산을 수행할 때 사용됩니다.

 

1. <bind> 태그의 구문 및 사용법

<!-- <bind> 태그의 기본 구조 -->
<bind name="변수명" value="값 또는 표현식" />

name: 변수의 이름을 지정합니다.
value: 변수에 할당할 값을 또는 수식을 지정합니다. 

 

2. <bind> 태그의 예제

<!-- 사용자 상태가 'ACTIVE'를 검색하는 쿼리 -->
<select id="getUserList" resultType="User">
    <bind name="status" value="'ACTIVE'" />
    SELECT * FROM Users
    WHERE status = #{status}
</select>

'status'라는 변수에 'ACTIVE'라는 값(문자열)을 할당합니다. 

이 변수를 사용하여 사용자의 상태가 'ACTIVE'인 사용자 목록을 가져옵니다.

 

<!-- 사용자 연봉을 검색하는 쿼리 -->
<select id="getUserList" resultType="User">
    <bind name="minSalary" value="1000" />
    <bind name="maxSalary" value="5000" />
    SELECT * FROM Employees
    WHERE salary BETWEEN #{minSalary} AND #{maxSalary}
</select>

'minSalary'와 'maxSalary'라는 변수에 각각 1000과 5000이라는 값을 할당합니다. 

이 변수를 사용하여 연봉이 1000에서 5000 사이인 직원들을 선택합니다.

 

<!-- 사용자의 등급을 설정하는 쿼리 -->
<select id="getUserList" resultType="User">
    <bind name="age" value="25" />
    <bind name="usersLevel" value="IF(${age} >= 18, '일반회원', '미성년자')" />
    SELECT * FROM Users
    WHERE age = ${age} AND usersLevel = #{usersLevel}
</select>

'age' 변수에는 회원의 나이를 할당하고, 'usersLevel'변수에는

회원의 나이에 따라 일반 회원 또는 미성년자 회원으로 설정합니다.

이를 통해 해당 등급의 회원을 조회합니다.

 

위 예제에서 '#'을 사용하지 않고 '$'사용한 이유

'$'를 사용한 이유는 변수가 SQL 쿼리의 일부로써

직접 치환되어야 하기 때문입니다.

만약 변수가 동적인 값으로 처리되어야 한다면 '#'을 사용해야 합니다.

 

[MyBatis] 변수 #{} 와 ${} 의 차이점?

안녕하세요. 경제적, 시간적 자유를 꿈꾸는 한량입니다. MyBatis에서의 substitution(대체) 공식은 동적 SQL을 작성할 때 사용되는 방법 중 하나로, SQL 쿼리 내에서 변수나 매개변수를 대체하는데 활용

hanryangitstory.tistory.com

반응형