Error

bad SQL grammar_동적 SQL문 이용(Mybatis Oracle)

문제 상황

; bad SQL grammar []; nested exception is java.sql.SQLSyntaxErrorException: ORA-00936: missing expression

SQL문의 문법이 올바르지 않다고 나왔다.

바로 매퍼파일 들어가서 SQL문 확인

 

해결 방법

 

<sql id="searchWhere"> 
  <where> 
    <if test="searchKeyword!=null and searchKeyword!=''"> 
    	${searchCondition} like '%' || #{searchKeyword} || '%' 
    </if> 
  </where> 
</sql>

 

<where> 써주고 그다음 <if> 써준다.

where태그 를 쓰는 이유는 if태그가 여러개 일 경우가 있으니까 밖에다가 써주는게 좋다.

(지금은 1개라서 실감이 안나지만..)

가령 and가 있더라도 where엘리먼트에 의해서 and나 or 이런 구문이 자동으로 삭제되고 적용된다.

 


위의 상황은 게시물에서 조건에 따라 검색을 할때에 쓰이는 sql문인데, 하나의 매퍼파일에 종종 이용할것 같아서

<sql id=""> 를 따로 만들어서 지정해주었다.

'Error' 카테고리의 다른 글

bad SQL grammar_Oracle과 MySQL의 차이  (0) 2021.03.03
MVC1 작업시 한글 인코딩이 안먹히는 경우  (0) 2021.03.03