传参都是list集合和或者list数组
1.批量更新
方式一
<update id="Update" parameterClass="java.util.List">
begin
<iterate conjunction=";">
update SYS_TABLE set
Category=#list[].Category#,
Name =#list[].Name#,
Code =#list[].Code#,
Status =#list[].Status#
where id = #list[].Id#
</iterate>
end;
</update>
方式二
<update id="Update" parameterClass="java.util.List">
begin
<iterate conjunction="">
update table set
Category=#list[].Category#,
Name =#list[].Name#,
Code =#list[].Code#,
Status =#list[].Status#
where id = #list[].Id#;
</iterate>
end;
</update>
个人实验了一下发现上面的两种方式消耗时间跟spring自带的BaseDao的batchUpdate方法差不多。
方式三
<update id="update" parameterClass="java.util.List">
update table set date_updated =sysdate, Status ='50'
where id in
<iterate conjunction="," open="(" close=")">
#list[]#
</iterate>
</update>
这个速度很快,9秒5w操作更新数据。
2.批量插入
方式一
<insert id="Add" parameterClass="java.util.List">
insert all
<iterate conjunction="">
into table (
id,Category,Name,Code,Status
)values(
#list[].Id#,#list[].Category#,#list[].Name#,
#list[].Code#,#list[].Status#)
</iterate>
<!--下面这句必须加,不然会提示找不到SELECT-->
select * from dual
</insert>
方式二
<insert id="insert" parameterClass="java.util.List">
insert into table ( key, local, value)
select * from (
<iterate conjunction=" union all">
select
#list[].name# as name,
#beans[].local# as local,
#beans[].value# as value
from dual
</iterate>
)
</insert>
上面的两个批量插入方式效果一样。
3.批量删除
<delete id="Del" parameterClass="java.util.List">
delete from table
where id in
<iterate conjunction="," open="(" close=")">
#list[]#
</iterate>
</delete>