MyBatis Plus 3.3 批量插入
时间: 2023-07-06 22:09:37 浏览: 131
mybatis 批量插入返回主键
MyBatis Plus 3.3 提供了一个名为 `saveBatch` 的方法,可以用于批量插入数据。该方法接受一个实体对象的集合,每个实体对象都表示要插入的数据。
示例代码如下:
```java
List<User> userList = new ArrayList<>();
userList.add(new User().setName("user1").setAge(20).setEmail("user1@test.com"));
userList.add(new User().setName("user2").setAge(21).setEmail("user2@test.com"));
userList.add(new User().setName("user3").setAge(22).setEmail("user3@test.com"));
int rows = userMapper.saveBatch(userList);
```
上述代码中,`User` 是实体类,`setName()`、`setAge()` 和 `setEmail()` 方法用于设置实体对象的字段值。`userMapper` 是 MyBatis Plus 自动生成的 Mapper 接口,`saveBatch` 方法用于批量插入数据。
需要注意的是,如果实体对象中包含自增主键字段,插入数据时需要忽略该字段。可以使用 `@TableId` 注解的 `type` 属性指定主键类型为 `IdType.AUTO`,这样在插入数据时会自动生成主键。
```java
public class User {
@TableId(type = IdType.AUTO)
private Long id;
private String name;
private Integer age;
private String email;
// 省略getter和setter方法
}
```
另外,需要注意的是,`saveBatch` 方法会将集合中的所有实体对象都插入到数据库中,如果集合中的某个实体对象已经存在于数据库中,会抛出 `DuplicateKeyException` 异常。因此,在使用 `saveBatch` 方法时,需要确保集合中的数据都是新数据,或者在插入之前先进行去重处理。
阅读全文