검색 조건이 3가지 이므로 총 6가지 조합이 가능하지만 , 각 문자열을 이용해서 검색 조건을 결합하는 형태로 하면 3개의 동적 SQL 구문만으로 처리를 할수 있다
<foreach>문을 이용해서 검색 조건들을 처리 하는데 typeArr이라는 속성을 이용한다
MyBatis는 원하는 속성을 찾을 때 getTypeArr() 과 같이 이름에 기반을 두어서 검색하기 때문에 Criteria에서 만들어둔 getTypeArr()의 결과인 문자열의 배열이 foreach의 대상이된다 (MyBatis는 엄격하게 javaBeans의 규칙을 따르지 않고 get/set 메서드만을 활용하는방식 입니다.)
<choose>안쪽의 동적 SQL은 ‘OR title … OR content… OR Writer…’와 같은 구문을 만들어 내게 됩니다. 따라서 바깥쪽에서는 <trim>을 이용해서 맨앞에 생성되는 OR을 없애 줍니다
위 동적 SQL은 상황에 따라서 다음과 같은 SQL을 생성합니다.
동적 SQL을 이용해서 검색 조건을 처리하는 부분은 해당 데이터의 개수를 처리하는 부분에서도 동일하게 적용하여야 합니다.
<sql>이라는 태그를 이용해서 SQL 의 일부를 별도로 보관하고 필요한 경우 include시키는 형태로 사용할수 있습니다.