강의

멘토링

로드맵

인프런 커뮤니티 질문&답변

vkfksaosldk님의 프로필 이미지
vkfksaosldk

작성한 질문수

마이바티스(스프링,jsp) 질문드립니다.

작성

·

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 수정 후 잘 적용되었는지 꼭 확인해 보세요.
도움이 되셨길 바랍니다!

Spring Boot 문서에서 더 많은 정보를 확인해보세요
이미지 설명을 보고 작성했습니다.

vkfksaosldk님의 프로필 이미지
vkfksaosldk

작성한 질문수

질문하기