zoukankan      html  css  js  c++  java
  • 【mybatis批量插入】

    mybatis批量插入操作:

      MySQL:1、INSERT INTO TABLE_NAME(ID,NAME)VALUES(1,'张三'),(2,'李四')
                      2、INSERT INTO TABLE_NAME(ID,NAME)VALUES(1,'张三');INSERT INTO TABLE_NAME(ID,NAME)VALUES(2,'李四')
         Oracle:1、INSERT INTO TABLE_NAME (ID,NAME) (SELECT 1,'张三' from dual) union all (SELECT 2,'李四' from dual)
                    2、INSERT INTO TABLE_NAME (ID,NAME) VALUES(1,'张三');INSERT INTO TABLE_NAME(ID,NAME)VALUES(2,'李四')


      备注:4条SQL都是数据库支持的写法。两者的第二种是不推荐的写法,因为不管效率还是可读性上都远差于第一种,当然,还有更重要的一点,Mybatis不支持第二种写法,因为mybatis的一个事务只支持一条SQL,所以,Mybatis里写法只能取两者的第一种,代码如下:

    MySQL:
    <select id="batchSave" parameterType="java.util.List">
                    INSERT INTO TABLE_NAME(ID,NAME) VALUES
                    <foreach collection="list"  item="itm" separator=",">
                            (#{itm.id},#{itm.name})
                    </foreach>
    </select>
    //////////////////////////////////////////////////////////////////////////////////////////////////
    ORACLE:
    <select id="batchSave" parameterType="java.util.List">
                    INSERT INTO TABLE_NAME(ID,NAME) 
                    <foreach collection="list"  item="itm" separator="union all">
                            (SELECT #{itm.id},#{itm.name} FROM DUAL)
                    </foreach>
    </select>

  • 相关阅读:
    正向代理和反向代理
    CFree5构建中止问题
    [转]Prototype核心成员的反思
    解决js文件乱码问题
    【WPF开发备忘】使用MVVM模式开发中列表控件内的按钮事件无法触发解决方法
    rem 搭配 less 适配
    中国近代史-蒋廷黻
    docker 生成镜像 上传到docker hub
    CMD 执行 Python 脚本 出现假死状态
    vue 创建项目的两种方式
  • 原文地址:https://www.cnblogs.com/yangjian-java/p/6632615.html
Copyright © 2011-2022 走看看