mybatis 中的批量添加、删除、修改

现在很多公司和个人开始都会使用到mybatis 框架,而mybatis框架是一个orm框架,所以 数据库的 insert 、update、 delete 那肯定是必须的,但有个问题就是性能的问题。

这么说吧:看到有人在使用mybatis批量删除批量添加的时候还在程序中使用for循环来调用方法,这样是没错,但是性能稍微低一点,所以下面看几个批量处理的例子,相对直接在程序中for循环的效率要高一点:

1、批量添加:

[html]  view plain  copy
 print ? 在CODE上查看代码片 派生到我的代码片
  1. <insert id="batchInsert" parameterType="java.util.List">  
  2.     INSERT INTO STUDENT (id,name,sex,tel,address)  
  3.     VALUES   
  4.     <foreach collection="list" item="item" index="index" separator="," >  
  5.         (#{item.id},#{item.name},#{item.sex},#{item.tel},#{item.address})  
  6.     </foreach>  
  7. </insert>  

2、批量修改:

[html]  view plain  copy
 print ? 在CODE上查看代码片 派生到我的代码片
  1. <update id="batchUpdate" parameterType="java.util.List">  
  2.     UPDATE STUDENT SET name = "250" WHERE id IN  
  3.     <foreach collection="list" item="item" index="index" open="(" separator="," close=")" >  
  4.         #{item}  
  5.     </foreach>  
  6. </update>  

3、批量删除:

[html]  view plain  copy
 print ? 在CODE上查看代码片 派生到我的代码片
  1. <delete id="batchDelete" parameterType="java.util.List">  
  2.     DELETE FROM STUDENT WHERE id IN  
  3.     <foreach collection="list" index="index" item="item" open="(" separator="," close=")">   
  4.         #{item}   
  5.     </foreach>  
  6. </delete>  

这种批量插入、修改、删除的方式比程序中for循环调用快原因如下:(1)、网络间传递的数据量少,当然传递的时间就少了很多。(2)、请求数据库服务的次数少,因为连接数据库服务是很耗时的(所以出了数据库连接池)。(3)、mybatis 在执行的时候才会获取Connection ,statement 对象所以想不for循环少创建了很多对象。

(4)、mybatis 的 执行方式有三种即:SIMPLE、REUSE、BATCH 三种方式,如果方便的话设置一下,如果使用SIMPLE 每一次执行都创建Statement对象并执行,如果使用REUSE  则重复使用preparedStatement 对象来执行 而BATCH 就是批量执行了而mybatis默认就是使用 SIMPLE 方式来执行,所以我们要注意最起码是不是应该是REUSE  执行方式。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值