mybatis映射中可以通过标签来实现Oracle的批量插入、更新和删除
标签中主要有以下属性:
collection、item、index、open、separate、close
collection:该属性必须指定,指代Dao层接口传递的数据类型,主要有三种:
①:list集合类型;collection=”list“
②:array数组类型;collection=”array“
③:map映射类型;collection=”map“
item:别名,表示集合中每一个元素迭代时的别名,获取数据时必须指定用别名来指定,不然会报错。
index:迭代下标,即迭代过程中的位置。
open:表示语句以什么开始。
separate:表示每次迭代之间以什么符号作为分割。
close:表示语句以什么结束。
- 批量新增
Oracle中可以使用java中的for循环逐条插入数据库,但是这种效率比较低,不适合一次性插入大量的数据,所以可以利用Oracle中的“dual”表
实现批量处理,并且效率高
Mapper层
void batchInsertData(List<TzPartnerAccout> list);
XML层
<insert id="batchInsertData">
insert into TZ_XJLT_PARTNER(ID, DWMC, ZHGXSJ, EXT1, EXT2,EXT3)
(
<foreach collection="list" item="item" index="index" separator="union all">
select
#{item.id},
#{item.dwmc},
to_date(substr(#{item.zhgxsj},1,19),'yyyy-mm-dd hh24:mi:ss'),
#{item.ext1},
#{item.ext2},
#{item.ext3}
from dual
</foreach>
)
</insert>
- 批量更新
Mapper层
int batchDeleteData(@Param("ids") String[] ids);
XML层
<update id="batchDeleteData">
update TZ_XJLT_PARTNER set STATUS='0' where ID in
<if test="ids!=null">
<foreach collection="ids" open="(" close=")" separator=","
item="id">
#{id}
</foreach>
</if>
</update>
3.批量删除