myBatis 조건문 예제

■ mybatis 조건입력에 사용될 파라메터 object(Person.java)

import java.util.List;
public class Person {
  private boolean deleteAll;
  private List<String> gubun;
  private String useYn;
  public boolean isDeleteAll() {
    return deleteAll;
  }
  public void setDeleteAll(boolean deleteAll) {
    this.deleteAll = deleteAll;
  }
  public List<String> getGubun() {
    return gubun;
  }
  public void setGubun(List<String> gubun) {
    this.gubun = gubun;
  }
  public String getUseYn() {
    return useYn;
  }
  public void setUseYn(String useYn) {
    this.useYn = useYn;
  }
}

 
 
 

■ Person 조건 객체(p object)에 값 입력

Person p = new Person();
p.setDeleteAll(true);
p.setUseYn("Y");

List<String> list = new ArrayList<String>();
list.add("A");
list.add("B");
list.add("C");
p.setGubun(list);

 
 
 

■ mapper에서 if 조건문 예제(하나의 조건 : deleteYn)

<select id="listPerson1" parameterType="Person" resultType="Person">
SELECT *
  FROM TBL
 WHERE 1=1
   <if test="deleteAll.equals(true)">
   ...QUERY...
   </if>
</select>

 
 
 

■ mapper에서 if 조건문 예제(하나 이상의 조건 : deleteAll, useYn)

<select id="listPerson2" parameterType="Person" resultType="Person">
SELECT *
  FROM TBL
 WHERE 1=1
   <if test="deleteAll.equals(true) and uesYn.equals('Y')">
   ...QUERY...
   </if>
</select>

 
 
 

■ mapper에서 choose…when…otherwise 조건문 예제

<select id="listPerson3" parameterType="Person" resultType="Person">
SELECT *
  FROM TBL
 WHERE 1=1
   <choose>
     <when test="deleteAll.equals(true)">...QUERY...</when>
     <when test="uesYn.equals('Y')">...QUERY...</when>
     <otherwise>...QUERY...</otherwise>
   </choose>
</select>

 
 
 

■ mapper에서 foreach 조건문 예제

<select id="listPerson4" parameterType="Person" resultType="Person">
SELECT *
  FROM TBL
 WHERE 1=1
   AND 
   <foreach collection="gubun" item="item" 
          separator="OR" open="(" close=")">
	NAME LIKE #{item}||'%'
   </foreach> 
</select>