当前位置: 移动技术网 > IT编程>开发语言>Java > MyBatis 使用 foreach 批量插入

MyBatis 使用 foreach 批量插入

2020年11月12日  | 移动技术网IT编程  | 我要评论
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

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网