MyBatis 使用 foreach 批量插入
程序员文章站
2022-05-04 23:05:54
yml文件spring: datasource: driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://localhost:3306/db3?serverTimezone=Asia/Shanghai&allowMultiQueries=true username: root password: rootmybatis: type-aliases-package: com.mozq....
yml文件
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/db3?serverTimezone=Asia/Shanghai&allowMultiQueries=true
username: root
password: root
mybatis:
type-aliases-package: com.mozq.boot.sbmybatis02.domain
mapper-locations: classpath:mapper/*Mapper.xml
第1种方式 单条语句插入多个值
可以使用 useGeneratedKeys
返回每个插入记录的主键。
修改 Mapper 添加批量插入方法
@Mapper
public interface UserMapper {
void batchSave(List<User> userList);
}
修改映射文件 添加批量插入映射语句
<insert id="batchSave">
insert into user(name, password) values
<foreach collection="list" item="user" separator=",">
(#{user.name}, #{user.password})
</foreach>
</insert>
测试接口
@RunWith(SpringRunner.class)
@SpringBootTest
public class SbMybatis02ApplicationTests {
@Test
public void testBatchSave(){
User user1 = new User();
user1.setName("关羽");
user1.setPassword("guanyu");
User user2 = new User();
user2.setName("张飞");
user2.setPassword("zhangfei");
List<User> userList = new ArrayList<>();
userList.add(user1);
userList.add(user2);
userMapper.batchSave(userList);
}
}
第2种方式 多条语句插入多个值
如果插入的同时获取主键,则只有第1条记录可以获取到,其他记录获取不到生成的主键。
修改 Mapper 添加批量插入方法
@Mapper
public interface UserMapper {
void batchSave(List<User> userList);
}
修改映射文件 添加批量插入映射语句
<insert id="batchSave">
<foreach collection="list" item="user" separator=";">
insert into user(name, password) values
(#{user.name}, #{user.password})
</foreach>
</insert>
修改 jdbcUrl 允许执行多条语句
jdbc:mysql://localhost:3306/db3?serverTimezone=Asia/Shanghai&allowMultiQueries=true
测试接口
@RunWith(SpringRunner.class)
@SpringBootTest
public class SbMybatis02ApplicationTests {
@Test
public void testBatchSave(){
User user1 = new User();
user1.setName("关羽");
user1.setPassword("guanyu");
User user2 = new User();
user2.setName("张飞");
user2.setPassword("zhangfei");
List<User> userList = new ArrayList<>();
userList.add(user1);
userList.add(user2);
userMapper.batchSave(userList);
}
}
本文地址:https://blog.csdn.net/qq_18671415/article/details/109641085
推荐阅读
-
python文件读写并使用mysql批量插入示例分享(python操作mysql)
-
Mybatis中使用updateBatch进行批量更新
-
Mysql使用insert插入多条记录 批量新增数据
-
codeigniter使用技巧批量插入数据实例方法分享
-
python文件读写并使用mysql批量插入示例分享(python操作mysql)
-
SQL Server使用一个语句块批量插入多条记录的三种方法
-
MyBatis 使用 foreach 批量插入
-
oracle使用一条语句批量插入多条数据的方法
-
mybatis批量插入数据
-
MyBatis-spring和spring JDBC批量插入Mysql的效率比较