<script th:inline="javascript">
function myFunction() {
var message = /*[[${message}]]*/ '';
console.log(message);
}
</script>
마이바티스(MyBatis)는 자바 객체와 SQL문 사이의 자동 매핑을 지원하는 ORM 프레임워크 중 하나입니다. 마이바티스를 사용하면 자바 개발자들은 SQL문을 작성하지 않고도 쉽게 데이터베이스를 조작할 수 있습니다.
마이바티스에서 동적 쿼리(Dynamic Query)는 조건에 따라 다른 SQL문을 생성하는 것을 말합니다. 동적 쿼리를 사용하면 하나의 SQL문으로 여러 가지 조건을 처리할 수 있습니다.
<select id="selectUser" parameterType="java.lang.String" resultType="User">
SELECT *
FROM user
<if test="userId != null">
WHERE user_id = #{userId}
</if>
</select>
<select id="selectUser" parameterType="java.lang.String" resultType="User">
SELECT *
FROM user
<choose>
<when test="gender == 'M'">
성별 : 남성
</when>
<when test="gender == 'F'">
성별 : 여성
</when>
<otherwise>
성별 : 미입력
</otherwise>
</choose>
</select>
<select id="selectUser" parameterType="java.util.List" resultType="User">
SELECT *
FROM user
WHERE user_id IN
<foreach item="item" collection="idList" open="(" separator="," close=")">
#{item}
</foreach>
</select>
where 태그는 일반적으로 WHERE절에서 사용되며, 동적 쿼리를 작성할 때 사용됩니다.
where 태그 내부에 작성한 SQL문은 WHERE절에 자동으로 추가됩니다.
예를 들어, 다음과 같은 SQL문을 생성하는 동적 쿼리를 작성한다고 가정해봅시다.
# SQL SELECT * FROM my_table WHERE column1 = #{value1} AND column2 = #{value2}
# MyBatis <select id="selectByExample" parameterType="com.example.MyTableExample" resultType="com.example.MyTable"> SELECT * FROM my_table <where> <if test="value1 != null"> AND column1 = #{value1} </if> <if test="value2 != null"> AND column2 = #{value2} </if> </where> </select>
위 코드에서 where 태그는 SQL문에서 WHERE절을 나타냅니다. if 태그를 사용하여 동적으로 SQL문을 생성하고, where 태그 내부에 작성하면 WHERE절에 자동으로 추가됩니다.
만약 value1이 null이라면 첫 번째 if 태그가 무시되고, value2가 null이라면 두 번째 if 태그가 무시됩니다. 따라서 where 태그 내부에 추가되는 SQL문은 필요한 조건에 따라 자동으로 생성됩니다.