您的位置:首页 > 其它

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

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

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

1、批量添加:

<insert id="batchInsert" parameterType="java.util.List">
INSERT INTO STUDENT (id,name,sex,tel,address)
VALUES
<foreach collection="list" item="item" index="index" separator="," >
(#{item.id},#{item.name},#{item.sex},#{item.tel},#{item.address})
</foreach>
</insert>


2、批量修改:

<update id="batchUpdate" parameterType="java.util.List">
UPDATE STUDENT SET name = "250" WHERE id IN
<foreach collection="list" item="item" index="index" open="(" separator="," close=")" >
#{item}
</foreach>
</update>


3、批量删除:

<delete id="batchDelete" parameterType="java.util.List">
DELETE FROM STUDENT WHERE id IN
<foreach collection="list" index="index" item="item" open="(" separator="," close=")">
#{item}
</foreach>
</delete>


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

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

三种执行方式之前的文章中已介绍过了,这里就不重复。三种执行方式文章地址:点击打开链接
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: