728x90
UPDATE 테이블_명
SET
<if test="param1 != null">
param1 = #{param1} ,
</if>
<if test="param1 != null">
param2 = #{param2} ,
</if>
<if test="param3 != null">
param3 = #{param3} ,
</if>
WHERE
idx = #{idx}
이런 구조로 된 SQL문이 있었다.
당연히 마지막 ',' 때문에 에러가 발생한다.
WHERE이 저런 상황이라면 1=1을 추가해주면 되던데
SET은 1=1을 할 수 없었다.
++ 1=1도 찾아보니 성능상 좋지 않다고 한다.
이때 SET에 trim이라는 것을 사용해 보았는데, 아래와 같이 사용하면 된다.
UPDATE 테이블_명
<trim prefix="SET" suffixOverrides=",">
<if test="param1 != null">
param1 = #{param1},
</if>
<if test="param=2 != null">
param=2 = #{param2},
</if>
<if test="param=3 != null">
param=3 = #{param3},
</if>
</trim>
trim의 옵션 prefix와 suffixOverrides는 이러한 기능이라고 한다.
prefix : trim 안에 있는 모든 문자열의 앞에 붙여줄 문자열
suffixOverrides : trim 안에 있는 모든 문자열의 조건문을 판별해서 문자열 맨 끝에서부터 하나 지워줄 문자열
참고
728x90
'Server > Database' 카테고리의 다른 글
[Mybatis] #{}, ${}의 차이 (0) | 2022.11.07 |
---|---|
[MySQL] IntelliJ 테이블 복사 (0) | 2022.09.15 |
[MySQL] auto increment 1로 변경하는 방법 (0) | 2022.08.30 |
728x90
UPDATE 테이블_명
SET
<if test="param1 != null">
param1 = #{param1} ,
</if>
<if test="param1 != null">
param2 = #{param2} ,
</if>
<if test="param3 != null">
param3 = #{param3} ,
</if>
WHERE
idx = #{idx}
이런 구조로 된 SQL문이 있었다.
당연히 마지막 ',' 때문에 에러가 발생한다.
WHERE이 저런 상황이라면 1=1을 추가해주면 되던데
SET은 1=1을 할 수 없었다.
++ 1=1도 찾아보니 성능상 좋지 않다고 한다.
이때 SET에 trim이라는 것을 사용해 보았는데, 아래와 같이 사용하면 된다.
UPDATE 테이블_명
<trim prefix="SET" suffixOverrides=",">
<if test="param1 != null">
param1 = #{param1},
</if>
<if test="param=2 != null">
param=2 = #{param2},
</if>
<if test="param=3 != null">
param=3 = #{param3},
</if>
</trim>
trim의 옵션 prefix와 suffixOverrides는 이러한 기능이라고 한다.
prefix : trim 안에 있는 모든 문자열의 앞에 붙여줄 문자열
suffixOverrides : trim 안에 있는 모든 문자열의 조건문을 판별해서 문자열 맨 끝에서부터 하나 지워줄 문자열
참고
728x90
'Server > Database' 카테고리의 다른 글
[Mybatis] #{}, ${}의 차이 (0) | 2022.11.07 |
---|---|
[MySQL] IntelliJ 테이블 복사 (0) | 2022.09.15 |
[MySQL] auto increment 1로 변경하는 방법 (0) | 2022.08.30 |