반응형
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 |
Tags
- xcode
- picker
- MAC
- unittest
- 네트워크
- Chrome
- 리눅스
- avds
- react
- 맥
- PYTHON
- node
- centos
- IOS
- linux
- MachineLearning
- localserver
- qunit
- ReactNative
- build
- VirtualBox
- vsCode
- Android
- jest
- webpack
- TensorFlow
- androidstudio
- 개발
- 센토스
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