본문 바로가기

IT/MyBatis

[MyBatis]MyBatis 동적쿼리 if 문

반응형

MyBatis 동적쿼리 if 문 사용법입니다.


파라미터 값 if문 사용방법 


MyBatis if 문

자바에서 사용하는 if else 문과는 조금 다른 단일 if 문이라고 보면 될 것 같습니다.


1. Mapper.java 파일에서 다음과 같이 파라미터를 넘겨 줍니다.


public List<test> testData(@Param("dbspaceNum")Integer dbspaceNum, @Param("dbspaceName")String dbspaceName) throws SQLException;


ex) 잘못된 예
왜 계속 #{dbspaceName}을 고집했는지 모르겠습니다...
이렇게 사용하면 계속 all 값이 안들어 가는거 같습니다...
if문을 안타더라구요..

<if test='#{dbspaceName} != "all"'>

AND a.dbsnum = #{dbspaceNum}

</if>


ex) 옳바른 예

이런식으로 변수명을 넘겨주어야지 제대로 된 값이 넘어옵니다. 

이렇게 간단한 것때문에 엄청 삽질 했네요...


<if test='dbspaceName != "all"'>

AND a.dbsnum = #{dbspaceNum}

</if>


같은 문자를 비교하는 방법은 다음과 같다고 합니다.


1.

 <if test='파라미터 != null  and(파라미터 eq "test".toString())'>

AND 필드명 = #{파라미터} ... 기타등등

 </if>


2.

  <if test='파라미터 !=null  and 파라미터.equals("test")'>

AND 필드명 = #{파라미터} ... 기타등등

 </if>


3. 대소문자 관계없이 비교하는법

   <if test='파라미터 !=null  and 파라미터.equalsIgnoreCase("test")'> //비교할 스트링 값을 " "(double quote)로 묶어주는게 좋다고 합니다.

AND 필드명 = #{파라미터} ... 기타등등

 </if>

이 있다고 합니다.


삽질의 흔적들 입니다...

<!-- <if test="#{dbspaceName} != null and #{dbspaceName}.equals('all')">

 WHERE a.chknum = b.chunknum

AND a.chknum = c.chknum

AND a.dbsnum = d.dbsnum

</if>

<if test="#{dbspaceName}!='all'">

WHERE a.chknum = b.chunknum

AND a.chknum = c.chknum

AND a.dbsnum = d.dbsnum

AND a.dbsnum = #{dbspaceNum}

</if> -->

<!-- <choose> -->

<!-- <when test='#{dbspaceName}.equals("all")'> -->

<!-- WHERE a.chknum = b.chunknum -->

<!-- AND a.chknum = c.chknum -->

<!-- AND a.dbsnum = d.dbsnum -->

<!-- </when> -->

<!-- </choose> -->

<!-- <when test="#{dbspaceName} != null and #{dbspaceName}.equals('all')">

WHERE a.chknum = b.chunknum

AND a.chknum = c.chknum

AND a.dbsnum = d.dbsnum

</when>

<when test="#{dbspaceName} != 'all'">

WHERE a.chknum = b.chunknum

AND a.chknum = c.chknum

AND a.dbsnum = d.dbsnum

AND a.dbsnum = #{dbspaceNum}

</when> -->

<!-- <choose>

<when test="#{dbspaceName}.equalsIgnoreCase('all')">

WHERE a.chknum = b.chunknum

AND a.chknum = c.chknum

AND a.dbsnum = d.dbsnum

</when>

<when test="#{dbspaceName} != 'all'">

WHERE a.chknum = b.chunknum

AND a.chknum = c.chknum

AND a.dbsnum = d.dbsnum

AND a.dbsnum = #{dbspaceNum}

</when> 

</choose>-->

참.... 어이 없는 실수 였다..............

728x90
반응형

'IT > MyBatis' 카테고리의 다른 글

[MyBatis]MyBatis 사용법  (0) 2015.10.03