MyBatis-Plus自动填充:告别手动插入,高效提升开发效率

在Java开发领域,MyBatis-Plus是一个非常受欢迎的持久层框架,它简化了数据库操作的复杂性,提高了开发效率。而其中,自动填充功能更是MyBatis-Plus的一大亮点。本文将深入探讨MyBatis-Plus自动填充的原理、配置及实际应用,帮助读者深入了解这一强大功能。
一、MyBatis-Plus自动填充的原理
MyBatis-Plus的自动填充功能主要通过自定义的填充处理器(FillStrategy)实现。填充处理器是一个接口,用户可以根据需求实现不同的填充逻辑。当插入或更新数据时,MyBatis-Plus会自动调用这些填充处理器,完成数据的自动填充。
二、MyBatis-Plus自动填充的配置
1. 开启自动填充
在application.properties或application.yml文件中,配置MyBatis-Plus的全局自动填充开关:
```
mybatis-plus.global-config.strategy.insert-use-placeholder=true
mybatis-plus.global-config.strategy.update-use-placeholder=true
```
2. 定义填充处理器
用户可以根据自己的需求定义填充处理器。以下是一个简单的例子,实现了创建时间(create_time)和更新时间(update_time)的自动填充:
```java
@Component
public class DefaultFillStrategy implements FillStrategy {
@Override
public void preInsert(FillExecutor fillExecutor) {
fillExecutor.setField("create_time", new Date());
fillExecutor.setField("update_time", new Date());
}
@Override
public void preUpdate(FillExecutor fillExecutor) {
fillExecutor.setField("update_time", new Date());
}
}
```
3. 配置实体类字段
在实体类中,使用`@TableField(fill = FieldFill.INSERT)`和`@TableField(fill = FieldFill.INSERT_UPDATE)`注解标记需要自动填充的字段,并指定填充时机:
```java
@Entity
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@TableField(fill = FieldFill.INSERT)
private Date createTime;
@TableField(fill = FieldFill.INSERT_UPDATE)
private Date updateTime;
// 省略其他字段和方法
}
```
三、MyBatis-Plus自动填充的实际应用
1. 插入操作
在插入数据时,MyBatis-Plus会自动填充指定字段的值。以下是一个简单的示例:
```java
@Test
public void testInsert() {
User user = new User();
user.setUsername("张三");
user.setPassword("123456");
userMapper.insert(user);
}
```
执行上述代码后,user实体中的createTime和updateTime字段将自动被填充当前时间。
2. 更新操作
在更新数据时,MyBatis-Plus会自动填充指定字段的值。以下是一个简单的示例:
```java
@Test
public void testUpdate() {
User user = userMapper.selectById(1);
user.setUsername("李四");
user.setPassword("654321");
userMapper.updateById(user);
}
```
执行上述代码后,user实体中的updateTime字段将自动被填充当前时间。
四、总结
MyBatis-Plus的自动填充功能极大提高了Java开发的效率,降低了手动操作数据库的复杂度。通过合理配置和使用填充处理器,开发者可以轻松实现数据的自动填充。希望本文对读者了解和运用MyBatis-Plus自动填充有所帮助。






