mybatis 批处理

批量删除:
<delete id= "deleteBatchByXXX" parameterType= "list">
delete from 表名 where groupon_id in
<foreach collection="list" item= "item" index ="index"
open= "(" close =")" separator=",">
#{item}
</foreach >
</delete >
注意,foreach是循环,用来读取传入的list参数。批量处理是parameterType的类型必须要注意。foreach标签中的collection属性表示传入的是什么集合类型。item表示的是集合中的一个量类似于
List<String>list;
for(String str:list){
……
}
item就相当于str的作用,用来遍历collection。index就是集合的索引。open表示标签以什么开始,close表示标签以什么结束。seprator表示元素之间的间隔。

批量插入:
<insert id="insertBatch" >
insert into 表名 ( uid, groupon_id, create_time, receive_time) values
<foreach collection="list" item= "item" index ="index" separator=",">
(#{item.uid,jdbcType=BIGINT}, #{item.grouponId,jdbcType=BIGINT},
#{item.createTime,jdbcType=INTEGER}, #{item.receiveTime,jdbcType=INTEGER})
</foreach >
</insert>
用法基本同批量删除,这里需要注意item.XXX表示获取该对象的XXX属性。

批量更新:
<update id= "updateSubmitTimeByUids" parameterType= "map">
update 表名
set submit_time = #{submitTime,jdbcType=BIGINT} where uid in
<foreach collection="list" item= "uid" index ="index"
open= "(" close =")" separator=",">
#{ uid}
</foreach >
</update >
用法和之前的基本相同,但是需要注意传入的参数是map类型。

批量查询:
<select id="selectBySomePoiIds"resultType="list"parameterType="java.util.Map">
SELECT <include refid="Base_Column_List" /> FROM 表名
WHERE poi_id in
<foreach collection="poiIds" item="poiId" index="index" open="(" close=")" separator=","> #{poiId}</foreach> AND pass_uid = #{passUid}
<if test="status != null">
AND status = #{status,jdbcType=BIGINT}
</if> </select>
注意标签的用法和上面的大同小异,都是通过传入一个集合对象来进行值得批量查询。

批量操作核心就是一次传入多个数据然后进行相关操作
Mybatis批处理是指在需要往数据库中插入大量数据时,使用批量方式进行操作。其中有几种常见的批处理方式可以使用。 一种是Foreach方式,通过循环遍历的方式进行批量插入、更新和删除操作。使用该方式,可以将一组数据作为参数传递给SQL语句,从而减少与数据库的交互次数。 另一种方式是Batch方式,通过一次性提交多个SQL语句来实现批量操作。这种方式可以提高数据库的操作效率,特别是在需要处理大量数据时。 此外,还可以使用preparedStatement方式进行批处理操作。这种方式通过预编译SQL语句,然后多次执行该语句来实现批量操作。预编译可以提高性能,并且可以减少SQL注入的风险。 根据已知的SQL执行效率,批处理的顺序通常是insert > delete > update。推荐的批处理方案是使用select delete insert的方式。这种方式可以在数据表中不存在记录时进行插入操作,已存在记录时进行更新操作。 总结来说,Mybatis提供了多种批处理方式,可以根据具体的需求选择合适的方式进行批量插入、更新和删除操作。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [Mybatis批处理操作详解](https://blog.csdn.net/weixin_41979002/article/details/115858043)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [MyBatis批处理](https://blog.csdn.net/weixin_43347659/article/details/115300054)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值