1. <set>
UPDATE 구문에서 동적으로 SET 절을 생성할 때 사용함. 불필요한 쉼표를 자동으로 제거해줌.
<set>
SQL 구문
</set>
- SET 키워드를 자동으로 추가함
- 내부 조건들 중 마지막에 있는 불필요한 쉼표를 자동으로 제거함
- 모든 내부 조건이 false일 경우 SET 절 자체가 생성되지 않음
<update id="updateAuthor">
UPDATE Author
<set>
<if test="username != null">username = #{username},</if>
<if test="password != null">password = #{password},</if>
<if test="email != null">email = #{email},</if>
</set>
WHERE id = #{id}
</update>
Author 테이블의 레코드를 동적으로 업데이트
- username, password, email 중 값이 제공된 필드만 업데이트함
- 마지막 필드 뒤의 불필요한 쉼표가 자동으로 제거됨
- 어떤 필드도 업데이트되지 않을 경우 SET 절이 생성되지 않음
2. <where>
WHERE 절을 동적으로 생성할 때 사용함. 불필요한 AND나 OR를 자동으로 제거해줌.
<where>
SQL 구문
</where>
- WHERE 키워드를 자동으로 추가함
- 내부 조건들 중 첫 번째 조건 앞의 AND 또는 OR를 자동으로 제거함
- 모든 내부 조건이 false일 경우 WHERE 절 자체가 생성되지 않음
<select id="findActiveUsersByName" resultType="User">
SELECT * FROM users
<where>
<if test="status != null">
status = #{status}
</if>
<if test="name != null">
AND name LIKE #{name}
</if>
<if test="email != null">
AND email = #{email}
</if>
</where>
</select>
사용자를 동적으로 검색
- status, name, email 조건 중 제공된 조건만 사용하여 검색함
- 조건이 하나도 없으면 모든 사용자를 검색함
- 첫 번째 조건 앞의 불필요한 AND가 자동으로 제거됨
- 조건이 없을 경우 WHERE 절 자체가 생성되지 않음
'MyBatis' 카테고리의 다른 글
계층 쿼리 (중첩 SELECT_mysql, CTE_mysql, CONNECT BY_oracle) (0) | 2024.09.09 |
---|---|
@변수명 := (0) | 2024.09.09 |
<sql>, <include>, <selectKey> (0) | 2024.09.09 |
<if>, <foreach>, <trim> (0) | 2024.09.09 |
<choose>, <when> , <bind> (0) | 2024.09.09 |