[error] mybatis 파라미터 값 동적쿼리 if문에서 null 체크 안될 때

·2022년 4월 3일
0

오류해결모음

목록 보기
11/19
<if test="fc.sType != null">
AND P.BUSINESS_TYPE IN (#{ fc.sType })
</if>
if test="fc.sFaci != null">
AND L.FACILITY_NAME IN (#{ fc.sFaci })
</if>
<if test="fc.sFloor != null">
AND R.ROOM_FLOOR IN (#{ fc.sFloor })
</if>

조건 검색으로 리스트를 조회해오는 동적 쿼리문을 짰다.
파라미터 값이 null이 아니면 AND 쿼리를 수행하려고 했는데 잘 안 돼서
AND와 OR와 괄호의 문제인줄 알고 계속 수정했는데 정상적으로 조회가 되지 않았다.

저 if문 쿼리만 빼고 조회하면 너무 잘 되는 것이... if문 동작에 뭔가 문제가 있겠다 싶어서
다시 한번 mybatis if문에서 null 체크와 문자열 비교하는 방법을 찾아보다가...

내가 controller에서 파라미터 받아올 때 null이면 "null"을 기본값으로 설정해준 것이 떠올랐다.

(@RequestParam (value="type", required=false, defaultValue="null") List typeArr 이라고 설정한것)
null 또는 공백이 아닌 문자열 그대로 "null"이 들어가 있던 것이다...ㅠ_ㅠ
너무 바보같고 허무했지만 찾아서 수정하고 정상적으로 조회될 때의 후련함은..... 👍👍👍

<if test="fc.sType != 'null'">
AND P.BUSINESS_TYPE IN (#{ fc.sType })
</if>
if test="fc.sFaci != 'null'">
AND L.FACILITY_NAME IN (#{ fc.sFaci })
</if>
<if test="fc.sFloor != 'null'">
AND R.ROOM_FLOOR IN (#{ fc.sFloor })
</if>

ㄴ> 해결 : null에 따옴표 추가

참고로 마이바티스 if문 문자열처리 이것저것 시도해보는데 도움이 많이 되었던 블로그👇👇👇

https://abbo.tistory.com/137

0개의 댓글