Back-End/Spring

[Spring] 검색 처리 구현하기(Mybatis 동적 태그)

챌링킴 2021. 9. 10. 20:20
반응형

1) 검색처리

제목 / 내용 / 작성자  --->   단일 항목 검색

제목 or 내용 / 제목 or 작성자 / 내용 or 작성자 / 제목 or 내용 or 작성자   --->   다중 항목 검색

 

 

2) Mybaits의 동적 태그들

if
WHERE
--('T') 제목으로 키워드 검색
<if test="type=='T'">
	BOARDTITLE LIKE '%'||#{keyword}||'%'
</if>
--('C') 내용으로 키워드 검색
<if test="type=='T'">
	BOARDCONTENTS LIKE '%'||#{keyword}||'%'
</if>
--('W') 제목으로 키워드 검색
<if test="type=='W'">
	BOARDWRITER LIKE '%'||#{keyword}||'%'
</if>

 

 

choose(when, otherwise)
WHERE
--('T') 제목으로 키워드 검색
<choose>
	<when test="type=='T'">
		BOARDTITLE LIKE '%'||#{keyword}||'%'
	</when>
  --('C') 내용으로 키워드 검색
	<when test="type=='C'">
		BOARDCONTENTS LIKE '%'||#{keyword}||'%'
	</when>
  --('W') 제목으로 키워드 검색
  	<otherwise>
		BOARDWRITER LIKE '%'||#{keyword}||'%'
	</otherwise>
</choose>

 

where
SELECT * FROM SPRING_BOARD WHERE BOARDNUM=#{boardnum}

SELECT * FROM SPRING_BOARD
<where>
	<if test="boardnum != null">
		BOARDNUM = #{boardnum}
	</if>
</where>

 

trim
--prefix : 내부 문장 맨 앞에 속성으로 주어준 값이 붙여준다.
SELECT * FROM SPRING_BOARD
<trim prefix="WHERE">
	BOARDNUM=#{boardnum}
</trim>

--밑의 구문과 동일함

SELECT * FROM SPRING_BOARD WHERE BOARDNUM=#{boardnum}

-----------------

--prefixOverrides : 내부 문장 맨 앞에 속성으로 주어준 값이 있다면 지워준다.
<trim prefixOverrides="OR">
	OR BOARDTITLE=#{keyword}
</trim>
BOARDTITLE=#{keyword}

-----------------

--suffix : 내부 문장 맨 뒤에 속성으로 주어준 값을 붙여준다.
<trim suffix=")">
</trim>
)

-----------------

--suffixOverrides : 내부 문장 맨 뒤에 속성으로 주어준 값이 있다면 지워준다.
<trim suffixOverrides=",">
	BOARDTITLE=#{keyword},
</trim>
BOARDTITLE=#{keyword}

 

foreach
String[] list = {"T","C","W"}
HashMap<String, Object> datas = new HashMap<>();
datas.put("list", list);

<foreach collection="list" item="type">
	<if test="type=='T'">
    	BOARDTITLE=#{keyword}
	</if>
    ...
</foreach>

<foreach collection="map" index="key값" item="value값">
</foreach>
반응형