Mybatis动态sql批量插入

<insert id="insert" >
     insert into user (id)
        values
<foreach collection="ids" item="id" index="index">
         (#{id,jdbcType=INTEGER} )
</foreach>
</insert>

这是mybatis动态sql批量插入,

第一个实例,foreach里面跟正常的java foreach一样,collection是传入的集合ids,item是遍历过程中的对象,index也就是遍历的第几次

所以上面这个动态sql可以转化为     insert into user (id) values (id) (id).......    这个(id)是foreach循环的次数

 

现在传入一个参数跟一个集合,比如,(String class,list<student> students),这样传入mapper的,如何批量插入实现   同一班级与不同学生多条记录

<insert id="insert">
    INSERT INTO 
		user
	(student, class)
    VALUES 
    <foreach collection="students" item="student"  separator=",">
  	 (#{student,jdbcType=VARCHAR}, #{class,jdbcType=VARCHAR})
    </foreach>
  </insert>
可以按上面这样写,虽然class不是一个集合,但是这样写也可以跟着students的遍历,将同一班级下的不同学生都插入到数据库

解析语句:foreach是正常的java用法,collection后面是集合students,item是每次遍历的对象student,

不过这次添加了separator是以什么分离的意思,因为foreach中class与student后面是个逗号,所以写成separator=","

后面还可以写 or  and等分割,以实际情况为准。

所以现在这个sql语句为:  insert into user (student,class) values (student,class)(student,class).......

可以完成单个参数跟集合循环批量插入的情况。

注意写动态sql跟sql语句一样,要注意前后参数的位置顺序的照应。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值