mybatis批量插入数据如何实现?实现方式有哪些?

KLQ 2020-05-13 14:35:18 java常见问答 6871

之前给大家简单的介绍一下mybatis批量更新数据的内容,那么下面要继续给大家介绍的就是mybatis批量插入数据的内容,那么这该如何实现呢?下面一起来详细的了解一下吧!

一、mybatis批量插入

因为项目需要生成多条数据,并且,要保存到数据库当中,在程序当中封装了一个List集合对象,之后,就要将这个集合当中的实体插入到数据库当中,项目使用了Spring+MyBatis,所以的话,就准备使用MyBatis批量插入。

这应该要比循环插入的效果更好,下面一起来了解一下详细过程吧。

下面是具体的代码实现:

mybatis批量插入

注意了,这里在循环的时候,要new出来新的对象。

不是说通过循环改变属性的值就认为这是一个新的对象了。

简单的来说的话,就是new ReddemCode()要放到for循环的里面。

xxxMapper.xml

<!-- 批量插入生成的兑换码 -->
<insert id ="insertCodeBatch" parameterType="java.util.List" >
    <selectKey resultType ="java.lang.Integer" keyProperty= "id"
                 order= "AFTER">
                SELECT LAST_INSERT_ID()
            </selectKey >
           insert into redeem_code
           (bach_id, code, type, facevalue,create_user,create_time)
           values
            
    <foreach collection ="list" item="reddemCode" index= "index" separator =",">
                (
                #{reddemCode.batchId}, #{reddemCode.code},
                #{reddemCode.type},
                #{reddemCode.facevalue},
                #{reddemCode.createUser}, #{reddemCode.createTime}
                )
            </foreach >
</insert >

xxxMapper.java(部分)

int insertCodeBatch(List < ReddemCode > reddemCodeList);

二、foreach标签解释

下面对foreach做一个简单的介绍。

1、foreach主是要用在构建in条件当中,它能够在SQL语句中进行迭代一个集合。

2、foreach元素属性主要有:index、close、open、item、separator、collection。

注意

index指定一个名字,用来代表在迭代过程当中,每次迭代到的位置;

close表示以什么结束;

open代表这个语句以什么开始;

item代表的是集合当中每一个元素进行迭代时的别名;

separator代表在每次进行迭代之间用什么符号作为分隔符;

collection这个属性是一定要指定的,但是在不同情况下,这个属性的值也会有所不同;

以上的内容就是对于mybatis批量插入数据的相关介绍了,你都了解了吧,更多内容,可以继续关注奇Q工具网的java架构师栏目了解。

推荐阅读:

mybatis多对多映射关系,详细讲解

mybatis批量查询如何实现?mybatis批量删除如何实现?

mybatis优缺点是什么?有哪些优点和缺点?