my batis 조회 sql 에서 조건 용법 상세 설명(foreach)
1.item 은 집합 중의 모든 요 소 를 교체 할 때의 별명 을 나타 낸다.
2.index 는 교체 과정 에서 매번 교체 되 는 위 치 를 나타 내 는 이름 을 지정 합 니 다.
3.open 은 이 문 구 를 무엇으로 시작 하 는 지 나타 낸다.
4.separator 는 매번 교체 할 때마다 어떤 기 호 를 구분자 로 하 는 지 나타 낸다.
5.close 는 무엇으로 끝 나 는 지,
6.collection 속성,이 속성 은 반드시 지정 해 야 하지만 상황 에 따라 이 속성의 값 이 다 릅 니 다.
주로 세 가지 상황 이 있다.
a.단일 매개 변수 가 들 어 오고 매개 변수 유형 이 List 일 때 collection 속성 값 은 list 입 니 다.
b.단일 매개 변수 가 들 어 오고 매개 변수 유형 이 array 배열 일 때 collection 의 속성 값 은 array 입 니 다.
c.들 어 오 는 매개 변수 가 여러 개 일 때 우 리 는 그것들 을 하나의 Map 으로 포장 해 야 합 니 다.물론 단일 매개 변수 도 map 로 포장 할 수 있 습 니 다.실제로 매개 변 수 를 들 어 올 때 MyBatis 에서 도 하나의 Map 으로 포장 합 니 다.map 의 key 는 매개 변수 이름 입 니 다.그래서 이 럴 때 collection 속성 값 은 들 어 오 는 List 나 array 대상 이 자신 이 봉 인 된 map 에 있 는 key 입 니 다.
<select id="findBy" resultMap="RfCustomerMemMap" parameterType="java.util.Map">
SELECT
<include refid="Column"/>
FROM rfl_customer_mem a LEFT JOIN rfl_loan b ON a.member_no = b.loan_member_no
WHERE a.member_no = #{memberNo} AND b.status IN
<foreach collection="status" index="index" item="item" open="(" separator="," close=")">
#{item}
</foreach>
<if test="name != null and name != ''">
AND name = #{name}
</if>
<if test="idNumber != null and idNumber != ''">
AND id_number = #{idNumber}
</if>
<if test="mobileNo != null and mobileNo != ''">
AND mobile_no = #{mobileNo}
</if>
<if test="loanNo != null and loanNo != ''">
AND loan_no = #{loanNo}
</if>
order by a.id DESC
<if test="offset > -1 and rows > -1">
limit #{offset},#{limit}
</if>
</select>
자바 호출 쿼 리 sql 코드
public List<LoanMerchantMemEntity> findMerchantMemBy(String merchantName, String merchantNo, String socialCreditCode, String loanNo, int offset, int limit) {
List<LoanMerchantMemEntity> list = new ArrayList<LoanMerchantMemEntity>();
Map<String, Object> filter = new HashMap<String, Object>();
filter.put("merchantName", merchantName);
filter.put("socialCreditCode", socialCreditCode);
filter.put("status", statsList());
filter.put("loanNo", loanNo);
filter.put("offset", offset);
filter.put("limit", limit);
filter.put("merchantNo", merchantNo);
try {
List<LoanMerchantMemEntity> row = loanMerchantMemDao.findBy(filter);
} catch (Exception e) {
LOGGER.error(filter, " ", e);
}
return list;
}
static List<String> statsList(){
List<String> statusList = new ArrayList<String>();
statusList.add("SUCCESS");
statusList.add("DUE");
statusList.add("OVER");
return statusList;
}
그 중에서 map 에서 key 는 status 값 유형 이 list 이 고 이런 사용 장면 은 세 번 째 입 니 다.즉,collection 은 map 의 key 값 입 니 다.보충:String 배열 이 들 어 오 면 sql 에서 foreach 문 구 를 사용 하여 IN 조 회 를 실현 합 니 다.
데이터베이스 에 표 시 된 필드 형식 이 num 이나 varchar 일 수 있 기 때문에 프론트 데스크 에서 전 달 된 그룹 은 백 엔 드 에서 처리 해 야 합 니 다.
제 가 보 내 온 것 은 Map 입 니 다.물론 request.getparameter("name")라 는 name 은 jsp 나 htm 페이지 의 id 에 대응 하 는 name 입 니 다.
다음 코드 에서 도:
String name=(String) params.get("name");
String[] hiddens = name.split(",");
params.put("name", hiddens);
우리 가 이 부분의 처 리 를 거 친 후에 데 이 터 는 map 에 저장 되 고 매개 변 수 를 입력 한 후에 조회 합 니 다.And conditions 조건 in
<foreach collection="name" index="index" item="item" open="(" separator="," close=")">
#{item}
</foreach>
sql 위 에서 우리 가 조회 할 때 OK!이상 은 개인 적 인 경험 이 므 로 여러분 에 게 참고 가 되 기 를 바 랍 니 다.여러분 들 도 저 희 를 많이 응원 해 주시 기 바 랍 니 다.만약 잘못 이 있 거나 완전히 고려 하지 않 은 부분 이 있다 면 아낌없이 가르침 을 주시 기 바 랍 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
MySQL/마이바티스 | 동적 쿼리 사용A라는 서비스에 해당하는 테이블을 조인하고 조회하는 데 사용됩니다. 나중에 공통화를 위해 B 및 C 서비스도 추가됩니다. A, B, C 서비스는 모두 단일 쿼리에서 작동할 수 있도록 공통화되어야 합니다. 테이블에 각...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.