转载自:http://blog.csdn.net/sanyuesan0000/article/details/19998727

最近需要用到Mybatis批量新增oracle数据库,刚开始在网上找到的方法是都是更新mySQL的,试了一下发现不适合Oracle,后来发现正确的oracle批量新增的sql是:

  1. <insert id="insertAttractionsBatch" parameterType="java.util.List">
  2. insert into ATTRACTIONS (
  3.  
  4. ID, NAME, LONGITUDE, LATITUDE, UPDATE_TIME
  5.  
  6. )
  7.  
  8. <foreach collection="list" item="item" index="index" separator="union all" >
  9. (select
  10. #{item.id,jdbcType=VARCHAR},
  11. #{item.name,jdbcType=VARCHAR},
  12. #{item.longitude,jdbcType=DECIMAL}, #{item.updateTime,jdbcType=TIMESTAMP}
  13.  
  14. from dual)
  15.  
  16. </foreach>
  17.  
  18. </insert>

需要重点注意的是sql中没有values,和<foreach>标签中的(selece ..... from dual),MySql中的sql是这样的:

新增:

  1. <insert id="insertAttractionsBatch" parameterType="java.util.List">
  2. insert into ATTRACTIONS (
  3.  
  4. ID, NAME, LONGITUDE, LATITUDE, UPDATE_TIME
  5.  
  6. )
  7.  
  8. <foreach collection="list" item="item" index="index" separator="union all" >
  9.  
  10. #{item.id,jdbcType=VARCHAR},
  11. #{item.name,jdbcType=VARCHAR},
  12. #{item.longitude,jdbcType=DECIMAL}, #{item.updateTime,jdbcType=TIMESTAMP}
  13.  
  14. </foreach>
  15.  
  16. </insert>

oracle更新不能按普通的方式,需要这样:

  1. <update id="updateAttractionsBatch" parameterType="java.util.List">
  2. begin
  3. <foreach collection="list" item="item" index="index" separator=";" >
  4. update ATTRACTIONS
  5. <set>
  6. <if test="item.id!=null and item.id!=''">
  7. id = #{item.id},
  8. </if>
  9.  
  10. <if test="item.head!=null and item.head!=''">
  11. HEAD = #{item.head},
  12. </if>
  13.  
  14. </set>
  15. where id = #{item.id}
  16. </foreach>
  17. ;end;
  18. </update>

删除就与MySql一样了如下:

  1. <delete id="deleteAttractions" parameterType="java.util.List">
  2.  
  3. delete from ATTRACTIONS
  4.  
  5. <where>
  6.  
  7. <foreach collection="list" index="index" item="item" open="(" separator="or" close=")">
  8.  
  9. id=#{item.id}
  10.  
  11. </foreach>
  12.  
  13. </where>
  14.  
  15. </delete>

mybatis,批量新增、修改,删除的更多相关文章

  1. Oracle忘记用户名和密码以及管理员用户新增修改删除用户

    Oracle忘记密码: 1.以管理员身份登录,打开dos窗口,输入 sqlplus / as sysdba 回车 2.查看当前用户和状态 select username, account_status ...

  2. mybatis 批量新增-批量修改-批量删除操作

    mapper.xml <!-- 批量新增 --> <insert id="saveBatch" parameterType="java.util.Lis ...

  3. MYSQL基础01(新增,修改,删除)

    首先说明一下,本人之前一直都是用MSSQL,由于工作原因,每天写上百条sql语句,并持续了几年;由于换了工作目前主要接触的MYSQL;所以现在开始学习MYSQL. 我的学习计划很简单,我在MSSQL使 ...

  4. ElasticSearch.net NEST批量创建修改删除索引完整示例

    本示例采用Elasticsearch+Nest 网上查了很多资料,发现用C#调用Elasticsearch搜索引擎的功能代码很分散,功能不完整,多半是非常简单的操作,没有成型的应用示例.比如新增或修改 ...

  5. Java代码操作properties文件(读取,新增/修改,删除)

    项目中需要用到操作properties文件中的数据,记录一下 package com.bonc.savepic.save; import java.io.FileNotFoundException; ...

  6. MYSQL-JDBC批量新增-更新-删除

    目录 1 概述 2 开启MYSQL服务端日志 3 深入MYSQL/JDBC批量插入 3.1 从一个例子出发 3.2 JDBC的批量插入操作 3.3 两个常被忽略的问题 3.5 误区 4 MYSQL/J ...

  7. MyBatis批量新增和更新

    之前有开发任务一个接口里面有大量的数据新增和更新操作,导致十分缓慢.使用了批量操作之后速度有明显提升,几乎百倍千倍的速度提升. 博主之前统计过,通过普通接口一次数据库插入大概需要200ms,对于大量新 ...

  8. 基于JQuery easyui,gson的批量新增/修改和删除-servlet版

    最近项目需要用到在页面进行批量操作,做了一些这方面的学习,参照网上的资料写了个小例子,记录一下: 准备 引入gson-2.6.2.jar,这里使用gson而不使用json-lib,原因是json-li ...

  9. Mybatis批量添加,删除与修改

    1.批量添加元素session.insert(String string,object O) public void batchInsertStudent(){ List<Student> ...

  10. hibernate 批量增加 修改 删除

    4.2  Hibernate的批量处理 Hibernate完全以面向对象的方式来操作数据库,当程序里以面向对象的方式操作持久化对象时,将被自动转换为对数据库的操作.例如调用Session的delete ...

随机推荐

  1. 图解JavaScript 继承

    JavaScript作为一个面向对象语言,可以实现继承是必不可少的,但是由于本身并没有类的概念(不知道这样说是否严谨,但在js中一切都类皆是对象模拟)所以在JavaScript中的继承也区别于其他的面 ...

  2. VCF (Variant Call Format)格式详解

    文章来源:http://www.cnblogs.com/emanlee/p/4562064.html VCF文件示例(VCFv4.2) ##fileformat=VCFv4.2 ##fileDate= ...

  3. CSS样式案例(1)-文字的排版

    本篇介绍的是小窗文字内容的排版,通过该篇文章可以让小伙伴们熟悉以下几个知识点: word-space.overflow.text-overflow. 最终的展示效果如下: 参考步骤: 1. 建立htm ...

  4. js实现自定义右键菜单--兼容IE、Firefox、Chrome

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <hea ...

  5. Android Fragment完全解析,关于碎片你所需知道的一切

    转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/8881711 我们都知道,Android上的界面展示都是通过Activity实现的, ...

  6. iOS开发——UI进阶篇(六)键盘处理

    一.键盘通知我们经常需要在键盘弹出或者隐藏的时候做一些特定的操作,因此需要监听键盘的状态 键盘状态改变的时候,系统会发出一些特定的通知UIKeyboardWillShowNotification // ...

  7. input多选计算

    CSS代码: body { counter-reset: icecream; } input:checked { counter-increment: icecream; } .total::afte ...

  8. 自动布局之autoresizingMask使用详解(Storyboard&Code)

    自动布局之autoresizingMask使用详解(Storyboard&Code) http://www.cocoachina.com/ios/20141216/10652.html 必须禁 ...

  9. imageable.touch

    使用 callback 确保创建,更新和删除 Picture 时,touch 关联的 imageable,使得其缓存能正确过期 这个update的方法用来把update时间强制更新成当前时间 http ...

  10. Java对文件中的对象进行存取

    1.保存对象到文件中 Java语言只能将实现了Serializable接口的类的对象保存到文件中,利用如下方法即可: public static void writeObjectToFile(Obje ...