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

2018-09-08  本文已影响0人  Spring_java

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语句执行,将出现如下问题:

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
上一篇 下一篇

猜你喜欢

热点阅读