[MySQL]_Mybatis 의 choose, when , otherwise 개념,사용

2022. 6. 9. 16:33[DB]/[MySQL]_

728x90
반응형

목적 : DB Framework 인 Mybatis 를 사용하면서 자주 쓰이는 choose 문과 if문의 차이점과 개념 숙지


환경 

      DB : MariaDB

      FrameWork : Mybatis


개념

 

통상적인 else if 와 같은 사용법입니다.

<choose> 태그 의 경우 <when> 조건이 true 곳에서 멈추고 해당 쿼리만 실행 후 choose 문을 빠져나옵니다.

모든 <when>을 통과하여도 true가 나오지 않을 경우 마지막의 <otherwise> 쿼리를 실행합니다.

<otherwise> 는 생략 할 수 있습니다.


예제

<select id="test1" resultType="HashMap">
    select * from table1
    where bno = #{num}
    AND
      <choose>
          <when test='selectoption == "01"'>
            (OPEN_DT LIKE CONCAT('%',#{opendate},'%'))
          </when>
          <when test='selectoption == "02"'>
              (PUT_DT LIKE CONCAT('%',#{putdate},'%'))
          </when>
          <otherwise>
             (OPEN_DT LIKE CONCAT('%',#{opendate},'%') OR PUT_DT LIKE CONCAT('%',#{putdate},'%') )
          </otherwise>

      </choose>

</select>

컬럼 중 selectoption 의 값을 비교하여 참인 부분의 like 문을 실행하는 쿼리입니다.

 

연속된 <when> 들이 true 가 아닐 경우 마지막에 <otherwise> 를 타게 됩니다. if else 문의 else 와 같은 역활입니다.


비슷한 느낌의 <if> 절과의 차이점

 

<if> 태그 의 경우 조건이 맞으면 해당 쿼리를 실행하고, 아닐경우 그다음 <if> 쿼리 혹은 남은 쿼리를 이어서 실행합니다.

<choose> 의 경우 true가 발생하면 나머지는 실행하지 않는 차이점이 있습니다.

 

용도에 맞게 잘 선택하면 될거 같습니다.

 

728x90
반응형