1) 일반적인 select 문 

<select id="retrieveDnlTab3BllCo" resultType="acdm.web.sys.code.model.Code">
       SELECT 
        cd_key
      ,  cd_nm
      ,  code
    FROM TABLE A
      INNER JOIN TABLE B
      INNER JOIN TABLE C
    WHERE    a.CODE_NAME = #{year}
    <if test= 'codeCd != "6"' >                                <-- codeCd 값의 유무에 따라 AND 구문을 포함할지 결정
    AND  b.'code_cd = #{'codeCd }
   </if>
  ORDER BY 1

   </select>

 

 

2) 컬렉션으로 값을 전달받아 IN 조건에 포함시키고 싶은 경우.

 

 WHERE
            <if test="listCrs!= null">
                        a.code IN
                       <foreach collection="listCrs" item="crs"                             <-- foreach 문을 이용하여 list 등의 컬렉션 객체를 전달받음
                                    index="index" open="(" close=")" separator=",">
                                    #{crs}
                     </foreach>
            </if>
          <![CDATA[
             AND CONVERT(CHAR(10),a.reg_date,121) < '2011-06-20'
           ]]>

 

3) 파라미터에 따라 동적으로 다른 프로시저를 호출하고 싶은 경우 choose 및  otherwise 이용.

   프로시저는 call 키워드를 사용하여 호출

 

   <choose>
          <when test= "param!= null and param!=''" >
           <![CDATA[
             { call SP_ONE(                      
                 #{year,   jdbcType=VARCHAR, mode=IN},
                 #{month,   jdbcType=VARCHAR, mode=IN}
                   }
       ]]>
       </when>
       <otherwise>
       <![CDATA[
         { call SP_TWO(
                 #{year,   jdbcType=VARCHAR, mode=IN},
                 #{month,   jdbcType=VARCHAR, mode=IN}
                }
        ]]>
        </otherwise>
   </choose>

 

 

 

 

4) where 절에 포함될 파라미터가 하나도 없는 경우가 발생할 수 있으면 아래와 같이 작성

 

보통 이런 경우엔 1=1 을 많이 썼는데 요런 기능도 제공한다더군요.

 

<select id="findActiveBlogLike" 
     resultType="Blog">
  SELECT * FROM BLOG 
  <where> 
    <if test="state != null">
         state = #{state}
    </if> 
    <if test="title != null">
        AND title like #{title}
    </if>
    <if test="author != null and author.name != null">
        AND author_name like #{author.name}
    </if>
  </where>
</select>

출처 : http://www.mybatis.org/mybatis-3/ko/dynamic-sql.html

 

 

개괄적인 내용과 자세한 설명은 하기 사이트 참조

http://www.mybatis.org/mybatis-3/ko/index.html

 

 

 

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

mybatis select  (0) 2016.12.06

+ Recent posts