赞
踩
可以使用insert语句,直接插入多条数据,多组数据之间用逗号隔开
SQL格式:
insert into 表名(字段1,字段2) values(值1,值2) , (值3,值4)
mybatis中的写法【已学生表为例】:
- <!-- list是一个存储student数据的集合-->
- <insert id="方法名">
- insert into student(id, name) values
- <foreach item="item" index="index" collection="list" separator=",">
- (#{item.id},#{item.name})
- </foreach>
- </insert>
Oracle不能直接使用insert into语句同时插入多条数据
可以使用以下两种方法,同时插入多条数据
SQL格式:
- INSERT ALL
- INTO 表名(字段1,字段2) VALUES(值1,值2)
- INTO 表名(字段1,字段2) VALUES(值①,值②)
- INTO 表名(字段1,字段2) VALUES(值Ⅰ,值Ⅱ)
- SELECT * FROM dual
- --dual是一个不存在的表(自定义的表名)
已student表为例,SQL添加三条数据
- INSERT ALL
- INTO student(id,name) VALUES(1001,'张三')
- INTO student(id,name) VALUES(1002,'李四')
- INTO student(id,name) VALUES(1003,'王五')
- SELECT * FROM dual
- --dual是一个不存在的表(自定义的表名)
mybatis中的写法
- <!-- list时存储student信息的集合 -->
- <insert id="方法名" parameterType="java.util.List">
- INSERT ALL
- <foreach collection="list" index="index" item="item">
- INTO
- student (id, name)
- VALUES
- (#{item.id},#{item.name})
- </foreach>
- select * from dual
- </insert>
SQL格式:
- Insert into 表名 表的别名(字段1, 字段2)
- select 字段列表 from (
- select 值1, 值2 from dual union all
- select 值①, 值② from dual union all
- select 值Ⅰ, 值Ⅱ from dual
- )
- --dual是一个不存在的表(自定义的表名)
已student表为例,SQL添加三条数据
- Insert into student s(id, name)
- select * from (
- select 1001, '张三' from dual union all
- select 1002, '李四' from dual union all
- select 1003, '王五' from dual
- )
- --dual是一个不存在的表(自定义的表名)
mybatis中的写法
- <!-- list时存储student信息的集合 -->
- <insert id="方法名" parameterType="java.util.List">
- Insert into student s(id, name)
- select * from (
- <foreach collection="list" index="index" item="item" separator="union all">
- --这里必须取别名,否则mybatis会报错
- select #{item.id} as id,#{item.name} as name from dual
- </foreach>
- )
- --dual是一个不存在的表(自定义的表名)
- </insert>
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。