mybatis 中的批量添加、删除、修改
2016-04-08 11:31
399 查看
现在很多公司和个人开始都会使用到mybatis 框架,而mybatis框架是一个orm框架,所以 数据库的 insert 、update、 delete 那肯定是必须的,但有个问题就是性能的问题。
这么说吧:看到有人在使用mybatis批量删除批量添加的时候还在程序中使用for循环来调用方法,这样是没错,但是性能稍微低一点,所以下面看几个批量处理的例子,相对直接在程序中for循环的效率要高一点:
1、批量添加:
2、批量修改:
3、批量删除:
这种批量插入、修改、删除的方式比程序中for循环调用快原因如下:(1)、网络间传递的数据量少,当然传递的时间就少了很多。(2)、请求数据库服务的次数少,因为连接数据库服务是很耗时的(所以出了数据库连接池)。(3)、mybatis 在执行的时候才会获取Connection ,statement 对象所以想不for循环少创建了很多对象。
(4)、mybatis 的 执行方式有三种即:SIMPLE、REUSE、BATCH 三种方式,如果方便的话设置一下,如果使用SIMPLE 每一次执行都创建Statement对象并执行,如果使用REUSE 则重复使用preparedStatement 对象来执行 而BATCH
就是批量执行了而mybatis默认就是使用 SIMPLE 方式来执行,所以我们要注意最起码是不是应该是REUSE 执行方式。
三种执行方式之前的文章中已介绍过了,这里就不重复。三种执行方式文章地址:点击打开链接
这么说吧:看到有人在使用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 执行方式。
三种执行方式之前的文章中已介绍过了,这里就不重复。三种执行方式文章地址:点击打开链接
相关文章推荐
- leetcode182-Duplicate Emails(找出出现重复的数据)
- iOS中定时任务的三种方法
- shell变量$#,$@,$0,$1,$2的含义
- #!/bin/sh 和 #!/bin/bash 区别 2013年3月14日
- Tomcat – java.lang.OutOfMemoryError: PermGen space
- JavaScript判断数据类型总结
- 使用telnet玩一下http
- python if __name__ == ' __main__'
- ldconfig命令用法笔记
- Default 方法
- java CyclicBarrier 2
- Markdown 语法
- Python一日一练10----快速排序
- C++第四次作业
- query操作的加锁过程和时间统计
- 网络刷博器爬虫(while应用)
- ViewDragHelper的使用
- 关于链表的相关总结及代码参考
- Json的解析
- JavaScript的总结博客