분석:
foreach의 속성
항목 : 반복 할 때 컬렉션에있는 요소의 별칭, 필수
index : 목록 및 배열에서 index는 요소의 시퀀스 번호이고 맵에서 index는 요소의 키이며 선택 사항입니다.
open : foreach 코드의 시작 기호, 일반적으로 '('및 ')'와 함께 사용되며, 일반적으로 in (), values ()에서 사용됨, 선택 사항
구분 기호 : 요소 사이의 구분 기호, 선택 사항
close : foreach 코드의 닫기 기호, 일반적으로 ')'및 '('와 함께 사용됨, 일반적으로 in (), values ()에서 사용됨, 선택 사항
collection : foreach 반복의 객체입니다. 입력 매개 변수로 사용하면 List 객체는 기본적으로 목록으로 대체되고 배열 객체는 배열로 대체됩니다. Map 객체에는 기본 키가 없습니다.
동시에 @param ( "xxx")를 사용하여 입력 매개 변수로 사용할 경우 키를 설정할 수 있습니다. 이때 기본 목록과 배열은 유효하지 않습니다.
공식 지침 :
List 인스턴스 또는 배열을 MyBatis에 매개 변수 개체로 전달할 수 있습니다. 이렇게하면 MyBatis가 자동으로이를 Map에 래핑하고 이름을 키로 사용합니다. 목록 인스턴스는 키로 "list"를 가지며 배열 인스턴스는 "array"키를 갖습니다.
1. 일괄 쿼리
상호 작용:
//参数里面的字符串由","进行拼接而成
List<PartyOrganization> getOrgByListId(@Param("listOrgId") String listOrgId);
xml :
<select id="getOrgByListId" resultType="com.safesoft.domain.partybuilding.entity.PartyOrganization">
select
id as id,
org_name as orgName,
parent_org_code as parentOrgCode,
org_code as orgCode,
org_leavel_type as orgLeavelType from t_zhcx_dj_dw_org
where
delete_flag = 0 and id in
<foreach item="item" index="index" collection="listOrgId.split(',')" open="(" separator="," close=")">
'${item}'
</foreach>
</select>
둘째, 일괄 추가
상호 작용:
Integer insertByAttachmentList(@Param("attachmentList") List<ActivityMapAttachment> attachmentList);
xml :
<insert id="insertByAttachmentList">
insert into t_xfdj_activity_map_attachment
(
activity_id,attachment_id
) values
<foreach collection="attachmentList" item="attachment" separator=",">
(
#{attachment.activityId},
#{attachment.attachmentId}
)
</foreach>
</insert>
셋, 일괄 수정
상호 작용:
Integer updateSignStatusByMemberList(@Param("activityId") Long activityI,@Param("memberList") List<Long> memberList);
xml :
<update id="updateSignStatusByMemberList" parameterType="java.util.List">
update t_xfdj_activity_map_member set
sign_in_status = 1
where activity_id=#{activityId} and member_id in
<foreach collection="memberList" index="index" item="item" separator="," open="(" close=")">
#{item}
</foreach>
</update>
4. 일괄 삭제 (아래 삭제는 업데이트 일뿐 삭제가 아닌 상태 변경)
상호 작용:
Integer batchDelproductId(List<Integer> productIds);
xml :
<update id="batchDelproductId">
update application_customer_product set is_delete=true
where id in
<foreach item="item" index="index" collection="list" open="(" separator="," close=")">
#{item}
</foreach>
</update>