my batis 문자열 을 분할 하고 순환 하여 in 여러 매개 변수 작업 을 실현 합 니 다.
mybatis xml 코드:
<select id="selectInXh" resultMap="BaseResultMap" parameterType="java.lang.String">
select *
from carinfo
where
xh in
<if test="param1 != null and param1 != ''">
<foreach item="item" index="index" collection="param1.split(',')" open="(" separator="," close=")">
#{item}
</foreach>
</if>
</select>
mybatis sql 인쇄:
==> Preparing: select * from carinfo where xh in ( ? , ? )
==> Parameters: 1(String), 2(String)
my batis 다 중 매개 변수 사용 방법 및 그 중 일부 매개 변 수 는 여러 값 으로 in 조 회 를 사용 합 니 다.1.매개 변수 가 하나 일 때 매개 변수 유형 은 List 입 니 다.
List<AnalysisInfo> listInfo(@Param("orderIds") List<Integer> orderIds);
인자 이름 을"orderIds"로 바 꾸 었 습 니 다.따라서 아래 foreach 에서 collection="orderIds",이름 을 바 꾸 지 않 으 면 foreach 에서 collection="list"
<select id="listInfo" resultType="com.ieou.retail.module.H5.dto.AnalysisInfo">
select materials_name as materialsName,sum(num) as totalNum,
sum(price) as totalSale
from sales_order_detail
where shipment_result = 'SUCCESS' and refunds_time is null
and sales_order_id in
<foreach collection="orderIds" index="index" item="item" open="(" separator="," close=")">
#{item}
</foreach>
group by materials_id order by totalNum desc limit 5
</select>
2.매개 변수 가 하나 밖 에 없 을 때 매개 변수 유형 은 Array 입 니 다.
List<AnalysisInfo> listInfo(Long[] orderIds);
매개 변수 형식 이 Array 라면 collection 속성 은 array 입 니 다.
<select id="listInfo" resultType="com.ieou.retail.module.H5.dto.AnalysisInfo">
select materials_name as materialsName,sum(num) as totalNum,
sum(price) as totalSale
from sales_order_detail
where shipment_result = 'SUCCESS' and refunds_time is null
and sales_order_id in
<foreach collection="array" index="index" item="item" open="(" separator="," close=")">
#{item}
</foreach>
group by materials_id order by totalNum desc limit 5
</select>
3.조회 의 매개 변수 가 여러 개 있 을 때,예 를 들 어
List<AnalysisInfo> listInfo(List<Integer> orderIds, Integer num);
이 경우 맵 방식 을 사용 해 야 합 니 다.collection 속성 에서 이름 을 지정 할 수 있 습 니 다.
Map<String, Object> params = new HashMap<>();
params.put("orderIds",orderIds);
params.put("num",num);
List<AnalysisInfo> listInfo(params);
XML 은 다음 과 같 습 니 다.
<select id="listInfo" resultType="com.ieou.retail.module.H5.dto.AnalysisInfo">
select materials_name as materialsName,sum(num) as totalNum,
sum(price) as totalSale
from sales_order_detail
where shipment_result = 'SUCCESS' and refunds_time is null and num = #{num}
and sales_order_id in
<foreach collection="orderIds" index="index" item="item" open="(" separator="," close=")">
#{item}
</foreach>
group by materials_id order by totalNum desc limit 5
</select>
이상 은 개인 적 인 경험 이 므 로 여러분 에 게 참고 가 되 기 를 바 랍 니 다.여러분 들 도 저 희 를 많이 응원 해 주시 기 바 랍 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 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에 따라 라이센스가 부여됩니다.