Mybatis 批量插入数据

本文介绍了在Mybatis中实现批量数据插入的方法,通过使用foreach语句和预编译SQL语句,有效提高了数据插入效率。文章展示了具体的实体类定义、SpringBoot测试类示例及MySQL批量插入语句。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Mybatis 批量插入数据

今天需要插入批量数据,因为使用多线程插入比较慢,所以采用批量插入的方式。
然后今日学习了如何在mybatis中进行批量插入,其实主要就是sql的语法insert into tableName1 (column1,column2) values (“字段1”,“字段2”),(“字段1”,“字段2”)
所以可以借助mybatis的foreach语句进行。
假设存在如下表对应的实体类

@Data
@RequiredArgsConstructor(staticName = "of")
@Accessors(chain = true)
public class User {
    private String name;
    private Integer age;
    private Date birthday;
}

测试类如下,使用springboot 工程

@SpringBootTest
@RunWith(SpringRunner.class)
public class ListTest {
    @Autowired
    private UserMapper userMapper;
    private List<User> list = new LinkedList<>();

    @Before
    public void method00() {
        Date date = new Date();
        list.add(User.of().setName("张三").setAge(11).setBirthday(date));
        list.add(User.of().setName("李四").setAge(15).setBirthday(date));
        list.add(User.of().setName("王五").setAge(18).setBirthday(date));
        list.add(User.of().setName("王五").setAge(18).setBirthday(date));
        list.add(User.of().setName("张三").setAge(21).setBirthday(date));
    }
      @Test
    public void method04() {
        int i = userMapper.insertBatch(list);
        System.out.println("i = " + i);
    }
}

mysql语句如下:

<insert id="insertBatch">
        INSERT INTO t_user ( name, age, birthday )
        VALUES
        <foreach collection="list" separator="," item="e" index="index">
            (
            #{e.name} ,
            #{e.age} ,
            #{e.birthday}
            )
        </foreach>
    </insert>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值