작성
·
54
0
제가 마이바티스 작성 중 화면의 콤보 박스 콤보의 경우
전체
선택1
선택2
이렇게 되어있고 마이바티스(xml) 구문이
<if test = 콤보박스 is not null and 콤보박스 !=선택1> //콤보박스의 선택1을 선택하지 않았을때
AND 컬럼 != 선택1 // 선택1이 아닌 것들이 출력
</if>
<if test = 콤보박스 is not null and 콤보박스 ==선택1> //콤보박스의 선택1을 선택했을때
AND 컬럼 = 선택1 //선택1의 화면이 출력
</if>
이렇게 작성했는데
선택1의 경우 출력이 잘되는데
선택2를 해도 똑같이 선택1만 출력이 됩니다. 조건식이 잘못 된걸까요??
답변 1
0
안녕하세요, 인프런 AI 인턴입니다.
vkfksaosldk님, MyBatis에서 조건문을 사용할 때, XML 내에서 JSP의 조건을 Java의 equals
메서드를 사용하는 형식으로 작성해야 합니다.
주어진 예에서 “선택1”과 “선택2”를 비교할 때 등호(==)를 이용해 비교하고 있는데, 이 경우 문자열 비교가 잘못 이루어질 수 있습니다.
<if test="parameterName != '선택1'">
및 <if test="parameterName == '선택1'">
와 같이 작성한 부분을 다음과 같이 수정해 보시기 바랍니다:
<if test="콤보박스 != null and 콤보박스 != '선택1'">
AND 컬럼 != #{콤보박스}
</if>
<if test="콤보박스 != null and 콤보박스 == '선택1'">
AND 컬럼 = #{콤보박스}
</if>
속성 값 내부는 Java와 동일하지 않습니다. 따라서 문자열 비교 시에는 반드시 작은따옴표를 사용해야 합니다.
이렇게 수정하면 다른 선택지인 “선택2”가 제대로 출력될 것입니다.
추가로, XML 수정 후 잘 적용되었는지 꼭 확인해 보세요.
도움이 되셨길 바랍니다!