반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 오블완
- jest
- 리눅스
- node
- build
- centos
- PYTHON
- 맥
- webpack
- vsCode
- unittest
- Android
- 센토스
- TensorFlow
- IOS
- qunit
- 티스토리챌린지
- linux
- localserver
- ReactNative
- Chrome
- 네트워크
- VirtualBox
- xcode
- androidstudio
- react
- MachineLearning
- MAC
- 개발
Archives
- Today
- Total
로메오의 블로그
[Spring] IN 조건문을 위한 foreach 사용하기 - myBatis, sql 본문
반응형
Spring Boot / Oracle / Mybatis 차례
CASE1
Service.java
package project;
import java.util.ArrayList;
import java.util.List;
@Service
public class Service {
public List<dataDTO> retrieveTasks(DataDTO dataDTO) {
// 파라미터 states는 "10,20,30" 형식으로 받는다.
String [] states = dataDTO.getStates().split(",");
List<String> stateList = new ArrayList<String>();
for (String state : states) {
stateList.add(state)
}
dataDTO.setStateList(stateList)
return mappper.retrieveTasks(dataDTO)
}
}
mapper.xml
<select id="retrieveTasks" parameterType="project.DataDTO" resultType="project.DataDTO">
<![CDATA[
SELECT
ID
, NAME
FROM MY_TABLE
WHERE 1=1
]]>
<if test="myId != null and myId != ''">
AND ID = #{myId, jdbcType=VARCHAR}
</if>
<if test="stateList != 0">
AND STATE IN
<foreach collection="stateList" item="state" index="index" separator="," open="(" close=")">
#{state}
</foreach>
</if>
</select>
CASE2
ServiceImpl.java
package project;
import java.util.ArrayList;
import java.util.List;
@Service
public class Service {
public List<dataDTO> retrieveTasks(DataDTO dataDTO) {
// 파라미터 states는 "10,20,30" 형식으로 받는다.
String states = (String) dataDTO.get("state");
List<String> stateList = new ArrayList<String>();
if (states != null) {
String[] stateArr = ((String) dataDTO.get("state")).split(",");
for (String state : stateArr) {
stateList.add(state)
}
}
dataDTO.set("stateList", stateList)
return mappper.retrieveTasks(dataDTO)
}
}
mapper.xml
<select id="retrieveTasks" parameterType="project.DataDTO" resultType="project.DataDTO">
<![CDATA[
SELECT
ID
, NAME
FROM MY_TABLE
WHERE 1=1
]]>
<if test="myId != null and myId != ''">
AND ID = #{myId, jdbcType=VARCHAR}
</if>
<if test="stateList.size != 0">
AND STATE IN
<foreach collection="stateList" item="state" index="index" separator="," open="(" close=")">
#{state}
</foreach>
</if>
</select>
Spring Boot / Oracle / Mybatis 차례
반응형
'Backend > Spring' 카테고리의 다른 글
spring boot 쿼리 로그 설정 - 파라미터 표시되게 (0) | 2023.06.12 |
---|---|
이클립스 단축키 (2) | 2023.01.04 |
[Spring Boot] 파일 업로드 처리 - ajax file upload (0) | 2019.12.11 |
[Spring Boot] myBatis Procedure / function 호출 (0) | 2019.12.04 |
[Spring boot] 예외처리 - GlobalExceptionHandler - ControllerAdvice (0) | 2019.10.15 |
Comments