본문 바로가기
[mybatis] xml에서 java method 사용 AND searchVal = #{param} @classpath@method(param) 과 같이 사용이 가능 보안상 쓸일은 없겠지만 아래와 같이 사용도 가능 SELECT '${@com.test.Utils@isEmpty(param)}' FROM DAUL 2020. 8. 24.
[Mybatis] 동적쿼리 (if test) 문자열처리 Mybatis if test 문자열처리 동적쿼리(dynamic sql)에서 많이 사용되는 Mybatis if test 에서의 문자열 처리. ※ java 문법과 동일하다고 보면 된다. 즉 문자열 비교를 위해 연산자 사용을 해선 안되고 equals 함수 사용시 null 값이 파라미터로 들어올 가능성을 대비하여 코딩해야 한다. [Mybatis if test 에서의 문자열 처리] 1. null 체크 1 2 3 cs 2. 문자 비교 java단에서 gender를 'M' 으로 저장시(Char) 1 cs java단에서 gender를 "F" 으로 저장시(String) 1 cs 3. 문자열 비교 1) equalsIgnoreCase 사용 1 cs 2) == 연산자 사용 1 cs 3) eq 사용 1 cs [사용하지 말아야 할.. 2020. 3. 27.
[Ibatis] dtd 경로 문제 www.ibatis.com 폐쇄로 dtd 경로 로 지정 불가. www.ibatis.com 을 ibatis.apache.org/dtd 로 수정해줘야함. [잘못된(폐쇄된) dtd 경로] [정상 dtd 경로] 참고 : https://storing.tistory.com/105 2019. 12. 30.
[Mybatis] $과 # 차이 1. #{} #{}사용시 mybatis 가 preparedStatement 를 생성하고, preparedStatement 매개변수 #{?} 값을 안전하게 셋팅하게 한다. #{param} 값을 'param' 과 같이 ''로 감싸며 치환한다. SQL injection 과 같은 공격을 방지할 수 있다. 더 빠르고, 안전하다. 1 2 3 4 5 SELECT * FROM user_info WHERE 1=1 AND id = #{id} -- #{id} >> 'developyo@tistory.com' AND pw = #{pw} -- #{pw} >> '1234' cs 2. ${} ${} 사용시 ${param} 값을 param 과 같이 '' 로 감싸지 않은채 치환한다. SQL injection 과 같은 공격을 받을 수 있.. 2019. 12. 5.
[Mybatis] like 조건시 문자열 처리 Mybatis like 조건시 문자열 처리 특정 문자열을 포함한 값을 가져오는 쿼리는 select * from where title like '%대상문자열%' 과 같이 쿼리를 작성 및 사용하는데, 이를 mybatis 에서 사용시 like 뒷 부분을 어떻게 처리해야 할지 난해하다. * like '%#{key}%' 와 같이 작성시 아래와 같은 에러로그를 볼 수 있다. 19:16:37,814 INFO [stdout] (default task-3) ### SQL: SELECT COUNT(*) FROM banword WHERE ban_word like '%?%' 19:16:37,814 INFO [stdout] (default task-3) ### Cause: java.sql.SQLException: Paramet.. 2019. 2. 13.