mybatis plus 插入操作
时间: 2023-10-05 07:11:14 浏览: 87
MyBatis Plus 提供了多种插入操作方式,包括批量插入、选择性插入、自动填充等。
1. 单条插入
通过 MyBatis Plus 提供的 insert 方法可以进行单条插入操作,例如:
```java
User user = new User();
user.setName("Tom");
user.setAge(18);
user.setEmail("tom@example.com");
userMapper.insert(user);
```
2. 批量插入
通过 MyBatis Plus 提供的 insertBatch 方法可以进行批量插入操作,例如:
```java
List<User> userList = new ArrayList<>();
User user1 = new User();
user1.setName("Tom");
user1.setAge(18);
user1.setEmail("tom@example.com");
userList.add(user1);
User user2 = new User();
user2.setName("Jerry");
user2.setAge(20);
user2.setEmail("jerry@example.com");
userList.add(user2);
userMapper.insertBatch(userList);
```
3. 选择性插入
通过 MyBatis Plus 提供的 insertSelective 方法可以进行选择性插入操作,只插入非空字段,例如:
```java
User user = new User();
user.setName("Tom");
user.setAge(18);
userMapper.insertSelective(user);
```
4. 自动填充
MyBatis Plus 提供了自动填充功能,通过实现 MetaObjectHandler 接口并注入到 MyBatis Plus 中,可以在插入操作时自动填充一些字段,例如:
```java
@Component
public class MyMetaObjectHandler implements MetaObjectHandler {
@Override
public void insertFill(MetaObject metaObject) {
this.strictInsertFill(metaObject, "createTime", LocalDateTime::now, LocalDateTime.class);
this.strictInsertFill(metaObject, "updateTime", LocalDateTime::now, LocalDateTime.class);
this.strictInsertFill(metaObject, "status", 1, Integer.class);
}
@Override
public void updateFill(MetaObject metaObject) {
this.strictUpdateFill(metaObject, "updateTime", LocalDateTime::now, LocalDateTime.class);
}
}
```
在实体类中添加对应的字段注解 @TableField(fill = FieldFill.INSERT),例如:
```java
public class User {
@TableField(fill = FieldFill.INSERT)
private LocalDateTime createTime;
@TableField(fill = FieldFill.INSERT_UPDATE)
private LocalDateTime updateTime;
@TableField(fill = FieldFill.INSERT)
private Integer status;
// ...
}
```
则在进行插入操作时,createTime 和 updateTime 字段会自动填充。
阅读全文