美文网首页
Mybatis的批量操作-ADD 两种不同注意

Mybatis的批量操作-ADD 两种不同注意

作者: Spring_java | 来源:发表于2018-09-08 15:52 被阅读0次

1:批量更新

批量插入有2种不同的SQL写法

1:直接在Foreach里面进行插入

<insert id="batchAddPerson" parameterType="com.mybatis.batch.pojo.Person">
        <foreach collection="persons" item="person" index="index"
            separator=";">
             insert into person (name,age,sex)  
             VALUES
                (
                #{person.name},#{person.age},#{person.sex}
                )
        </foreach>
    </insert>

结果:

Preparing: insert into person (name,age,sex) VALUES ( ?,?,? ) ; insert into person (name,age,sex) VALUES ( ?,?,? ) 
: ==> Parameters: 李5(String), 12(Integer), 1(Integer), 张4(String), 12(Integer), 1(Integer)
: <==    Updates: 1

可以看到,最终的执行结果返回的数据库影响行数是1.但是数据还是插入了2条

说明:
上述方式相当语句逐条INSERT语句执行,将出现如下问题:

    1. mapper接口的add方法返回值将是最一条INSERT语句的操作成功的记录数目(就是0或1),
      而不是所有INSERT语句的操作成功的总记录数目 这里是1
    1. 当其中一条不成功时,不会进行整体回滚。
  • 3:还有一点很重要 separator=";"这个里面是分号。相当于变成了2条SQL在执行了。这点可以从上面的
    insert into person (name,age,sex) VALUES ( ?,?,? ) ;
    insert into person (name,age,sex) VALUES ( ?,?,? ) 看出来,是2个SQL.

2:第二种批量插入的方法

<insert id="batchAddPerson" parameterType="com.mybatis.batch.pojo.Person">
       insert into person (name,age,sex)    
         VALUES
        <foreach collection="persons" item="person" index="index"
            separator=",">
            (
            #{person.name},#{person.age},#{person.sex}
            )
        </foreach>
    </insert> 

这个是把insert into 放在最外层操作了,注意,这个separator="," 现在变成了逗号了。

最终结果:

Preparing: insert into person (name,age,sex) VALUES ( ?,?,? ) , ( ?,?,? )
: ==> Parameters: 李5(String), 12(Integer), 1(Integer), 张4(String), 12(Integer), 1(Integer)
: <==    Updates: 2
  • 1:拼接的SQL语句变成了 VALUES ( ?,?,? ) , ( ?,?,? ) 而不是两个单独的SQL语句了,
  • 2:最后返回的 结果是2
  • 3 :这个separator="," 现在变成了逗号了

相关文章

  • Mybatis的批量操作-ADD 两种不同注意

    1:批量更新 批量插入有2种不同的SQL写法 1:直接在Foreach里面进行插入 结果: 可以看到,最终的执行结...

  • mybatis for mysql数据库 批量操作(insert

    批量添加 批量修改 in/or 操作优化(mysql) mybatis 实现 in操作优化

  • Mybatis开发总结

    Mybatis批量操作 Mybatis大于小于号使用 mybatis在xml中不能直接使用> <等符号,需要用> ...

  • mybatis+oracle 批量操作

    在mybatis中,对于oracle的批量操作有点特殊,用到了就记一下。 批量插入 批量插入(带序列) 批量插入(...

  • git撤销总结

    1.已经执行了 git add .操作单个撤销add使用 批量撤销add操作使用 2.文件只是做了修改并没有执行g...

  • mybatis批量插入,control中传入参数为

    关于mybatis批量问题,见之前文章mybatis批量插入、批量更新和批量删除mybatis批量新增,插入的数据...

  • Mybatis 批量操作

  • Mybatis (批量操作)

    1.批量插入 forearch的参数可以是array,list,map这三种 2.批量删除 3.批量更新 通过一条...

  • mybatis 批量操作

    一些时候需要将一些数据批量的进行操作,比如:根据ids批量查询、更新、删除、将一个集合的数据插入数据库。简单的操作...

  • mybatis 批量操作

    大纲 本文旨在分享一下mybatis批量操作的实现方式 批量插入 批量更新 批量插入或更新 同时分享一个对代码生成...

网友评论

      本文标题:Mybatis的批量操作-ADD 两种不同注意

      本文链接:https://www.haomeiwen.com/subject/ohtlgftx.html