mybatis
3
Springboot, Mybatis :: 부등호, 비교연산자 사용 방법
1
2024.02.02
쿼리문을 작성하다보면 비교문을 사용하는 경우가 생기는데.. 마이바티스에서는 , WITH CTE(WorkDate) AS ( SELECT CONVERT ( DATE, #{Year}+'-01-01') UNION ALL SELECT DATEADD(d, 1, WorkDate) FROM CTE WHERE WorkDate (CONVERT(DATE, #{Year}+'-12-31')) ) SELECT * FROM CTE OPTION ( MAXRECURSION 0 ); 둘. WITH CTE(WorkDate) AS ( SELECT CONVERT ( DATE, #{Year}+'-01-01') UNION ALL SELECT DATEADD(d, 1, WorkDate) FROM CTE WHERE ) SELECT * FROM CTE..
MSSQL, Mybatis :: DB툴과 웹에서의 쿼리 속도가 다를 때 고려할 것
2024.01.16
쿼리속도는 00:00:06 초 정도로 짧게 나오는데 API 실행 속도는 48초가 나오는 케이스가 발생. 물론 건 수가 많은 SQL이기는 했지만, 쿼리 속도와 API 속도가 이렇게 비례하지 않는 케이스는 처음이었음. -- 이런 현상이 발생하는 경우는 대부분 Where 절의 조건이 VARCHAR로 되어 있다는 것 MSSQL 의 특징 MSSQL의 경우 VARCHAR형 데이터를 비교할 때 NVARCHAR형으로 변환하여 데이터를 비교한다고 함. 즉, 데이터의 사이즈를 가변으로 할지 아닐지를 결정하는 것으로 보임. 쿼리를 사용할 때마다 강제적으로 타입 캐스팅이 일어나고, 수행되는 쿼리의 타입이 다르기 때문에 INDEX를 안타게 됨. ㅠ-ㅠ.. 쿼리 튜닝을 아무리해도 DB 속도는 빨라지는데, API 호출 속도는 크게..
Mybatis :: 달러($)와 샵(#)의 차이
2024.01.16
파라미터 매핑을 하는 데에 사용하는 $와 # 두가지의 차이에 대해 알아보도록 하겠다. # PreparedStatement를 의미 파라미터가 String 형태로 들어와 자동으로(' ') 파라미터 형태가 됨 #{user_id} 의 값이 'neeon'이라면 user_id = 'neeon' 형태가 됨 쿼리 주입을 예방할 수 있어 보안 측면에서 유리 정적인 방법을 사용하기 때문에 캐싱을 해서 재활용할 수 있어서 효율적임 $ Statement를 의미 해당 컬럼의 자료형에 맞추어 파라미터의 자료형이 변경됨 파라미터가 바로 출력됨. 쿼리 주입을 예방할 수 없어 보안 측면에서 불리하므로 사용자의 입력을 전달할 때는 사용하지 않음 (SQL Injection) 테이블이나 컬럼명을 파라미터로 전달하고 싶을 때 사용함 차이점 ..