Mybatis动态sql批量插入

来源:互联网 发布:装修平面设计图软件 编辑:程序博客网 时间:2024/05/16 17:34

<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语句一样,要注意前后参数的位置顺序的照应。

阅读全文
0 0
原创粉丝点击