Server/Database

Server/Database

[MyBatis] UPDATE SET 1=1은 없을까? / 대신 trim을 사용해 보았다.

UPDATE 테이블_명 SET param1 = #{param1} , param2 = #{param2} , param3 = #{param3} , WHERE idx = #{idx} 이런 구조로 된 SQL문이 있었다. 당연히 마지막 ',' 때문에 에러가 발생한다. WHERE이 저런 상황이라면 1=1을 추가해주면 되던데 SET은 1=1을 할 수 없었다. ++ 1=1도 찾아보니 성능상 좋지 않다고 한다. 이때 SET에 trim이라는 것을 사용해 보았는데, 아래와 같이 사용하면 된다. UPDATE 테이블_명 param1 = #{param1}, param=2 = #{param2}, param=3 = #{param3}, trim의 옵션 prefix와 suffixOverrides는 이러한 기능이라고 한다. prefix ..

Server/Database

[Mybatis] #{}, ${}의 차이

주로 #{} 이렇게 되어있는데 ${} 이렇게 되어있는 부분도 있어서 검색해보았다. #{}와 ${}의 가장 큰 차이는 '', String이냐 아니냐의 차이인 것 같다. #{} String 형태로 주입되어 자동적으로 ''가 붙는 형태가 된다. WHERE user_idx = #{user_idx} 예를 들면 위의 경우 출력되는 쿼리문은 WHERE user_idx = '2'의 형태가 된다. 쿼리 주입을 예방할 수 있어서 보안 측면에서 유리하다. ${} String 형태가 아닌 주입되는 형태 그대로 출력된다. 쿼리 주입을 예방할 수 없어서 보안 측면에서 불리하다. 테이블 명, 칼럼 명을 전달할 때 사용한다. #{}의 경우 String 형태이기 때문에 ''가 붙어서 사용할 수 없다. 출처 https://logical..

Server/Database

[MySQL] IntelliJ 테이블 복사

Target schema 지정 후 Import

Server/Database

[MySQL] auto increment 1로 변경하는 방법

ALTER TABLE [테이블 명] AUTO_INCREMENT = 1;