zoukankan      html  css  js  c++  java
  • mybatis批量插入(mysql和oracle)

    Mybatis批量插入需要foreach元素。foreach元素有以下主要属性:

    (1)item:集合中每一个元素进行迭代时的别名。

    (2)index:指定一个名字,用于表示在迭代过程中,每次迭代到的位置。

    (3)collection:根据传入的参数值确定。

    (4)open:表示该语句以什么开始。

    (5)separator:表示在每次进行迭代之间以什么符号作为分隔 符。

    (6)close:表示以什么结束。

    mybatis + mysql的写法:

     <insert id="insertBatch" parameterType="com.demo.User"
                useGeneratedKeys="true" keyProperty="id" keyColumn="id">
            INSERT INTO user
            (
            id,
            name,
            age
            )
            values
            <foreach collection="list" index="index" item="item" separator=",">
                (
                #{item.id},
                #{item.name},
                #{item.age}
                )
            </foreach>
        </insert>
    

    mybatis + oracle的写法:

    <insert id="save" parameterType="com.demo.User"
                useGeneratedKeys="true" keyProperty="id" keyColumn="id">
                INSERT INTO user
                (
                  id,
                  name,
                  age
                )
              <foreach collection="roleIdList" item="item" index="index" separator="UNION ALL" >
                SELECT
                    #{item.id},
                    #{item.name},
                    #{item.age}
                FROM dual
            </foreach>
    </insert>
    

    oracle的写成mysql的写法就会报错:SQL 命令未正确结束。

    mybatis+oracle需要注意三个地方:

    (1)需要取掉values

    (2)separator属性值改为UNION ALL。因为在oracle中用insert into xxx values (xxx,xxx),(xxx,xxx) 这种语法是通不过的

    (3)foreach标签中需要取掉括号,加入select ..from dual.

  • 相关阅读:
    Bootstrap 栅格系统的总结
    你真的了解font-weight吗?
    常用jquery
    ios 遮罩层,切换后内容滑动到最上方,并且不可点击
    Canvas与Image互相转换示例以及实现微信长按自动识别二维码功能
    解决手机上页面返回但是页面js没有刷新的痛点
    rem定义
    二维码转换格式
    bootstrap框架的基本使用
    响应式开发及其原理
  • 原文地址:https://www.cnblogs.com/snail-gao/p/14453036.html
Copyright © 2011-2022 走看看