网站流量提升方法,做淘宝一件代发的网站,广州市研发网站建设平台,网站后台系统的易用性MyBatis-Plus#xff08;MP#xff09; 提供了一个非常强大的功能——自动填充功能。该功能可以在执行插入或更新操作时#xff0c;自动为某些字段赋值#xff0c;免去手动设置这些字段的麻烦。常见的应用场景包括 创建时间 和 更新时间 字段的自动填充#xff0c;帮助开发…MyBatis-PlusMP 提供了一个非常强大的功能——自动填充功能。该功能可以在执行插入或更新操作时自动为某些字段赋值免去手动设置这些字段的麻烦。常见的应用场景包括 创建时间 和 更新时间 字段的自动填充帮助开发者在处理数据时更加高效减少人为错误。
本文将介绍 MyBatis-Plus 自动填充功能 的概念、实现步骤、场景应用以及如何配置和自定义填充规则。 1. 自动填充的概念
自动填充功能指的是当执行 插入INSERT 或 更新UPDATE 操作时某些字段可以由 MyBatis-Plus 自动赋值无需开发者手动提供。这些字段通常是一些系统字段比如
创建时间记录实体对象的创建时间。更新时间记录实体对象的最后修改时间。
自动填充通过 字段注解 配合 MetaObjectHandler 实现可以自动为某些字段设置默认值避免重复的代码逻辑。 2. 实现自动填充的步骤
要实现 MyBatis-Plus 的自动填充功能通常需要以下几个步骤
2.1 步骤 1在实体类中标注自动填充字段
在实体类中使用 MyBatis-Plus 提供的 TableField 注解指定需要自动填充的字段并设置 fill 属性。
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.IdType;import java.time.LocalDateTime;public class User {TableId(value id, type IdType.AUTO)private Long id;private String name;TableField(fill FieldFill.INSERT)private LocalDateTime createTime;TableField(fill FieldFill.INSERT_UPDATE)private LocalDateTime updateTime;// Getters and Setters
}TableField(fill FieldFill.INSERT)表示在插入数据时自动填充字段如 createTime 字段在插入时自动赋值。TableField(fill FieldFill.INSERT_UPDATE)表示在插入和更新时都会自动填充字段如 updateTime 字段。
2.2 步骤 2实现 MetaObjectHandler 接口
MyBatis-Plus 通过 MetaObjectHandler 接口来实现字段的自动填充功能。开发者需要实现该接口并重写 insertFill 和 updateFill 方法。
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.stereotype.Component;import java.time.LocalDateTime;Component
public class MyMetaObjectHandler implements MetaObjectHandler {// 插入时自动填充Overridepublic void insertFill(MetaObject metaObject) {this.strictInsertFill(metaObject, createTime, LocalDateTime.class, LocalDateTime.now()); // 自动填充创建时间this.strictInsertFill(metaObject, updateTime, LocalDateTime.class, LocalDateTime.now()); // 自动填充更新时间}// 更新时自动填充Overridepublic void updateFill(MetaObject metaObject) {this.strictUpdateFill(metaObject, updateTime, LocalDateTime.class, LocalDateTime.now()); // 自动填充更新时间}
}在这个实现中
insertFill在插入操作时自动填充字段例如将当前时间赋值给 createTime 和 updateTime 字段。updateFill在更新操作时自动填充字段通常只会更新 updateTime 字段。
2.3 步骤 3注册 MetaObjectHandler
MetaObjectHandler 接口的实现类需要通过 Component 注解标记为 Spring Bean这样 Spring Boot 会自动扫描并注入到 MyBatis-Plus 中。
Component
public class MyMetaObjectHandler implements MetaObjectHandler {// 同上
}3. 自动填充的场景应用创建时间、更新时间
3.1 创建时间createTime
创建时间 字段通常在数据插入时自动填充。它记录了数据创建的时间通常使用 LocalDateTime 类型存储。
实现示例
在实体类中我们使用 TableField(fill FieldFill.INSERT) 来确保插入数据时自动填充 createTime 字段。
TableField(fill FieldFill.INSERT)
private LocalDateTime createTime;在 MetaObjectHandler 中我们设置 insertFill 方法自动填充当前时间
Override
public void insertFill(MetaObject metaObject) {this.strictInsertFill(metaObject, createTime, LocalDateTime.class, LocalDateTime.now());
}3.2 更新时间updateTime
更新时间 字段通常在数据更新时自动填充记录数据最后一次修改的时间。updateTime 字段需要通过 TableField(fill FieldFill.INSERT_UPDATE) 注解来进行配置使得在插入和更新时都能自动填充。
实现示例
在实体类中我们使用 TableField(fill FieldFill.INSERT_UPDATE) 来确保插入和更新时自动填充 updateTime 字段。
TableField(fill FieldFill.INSERT_UPDATE)
private LocalDateTime updateTime;在 MetaObjectHandler 中我们设置 updateFill 方法自动填充当前时间
Override
public void updateFill(MetaObject metaObject) {this.strictUpdateFill(metaObject, updateTime, LocalDateTime.class, LocalDateTime.now());
}3.3 自动填充的效果
通过上述配置在执行插入和更新操作时MyBatis-Plus 会自动为 createTime 和 updateTime 字段填充当前时间无需开发者显式赋值。
User user new User();
user.setName(John);
userService.save(user); // 自动填充 createTime 和 updateTime4. 配置与自定义填充规则
4.1 配置自动填充字段
在 MyBatis-Plus 中我们可以通过 TableField 注解的 fill 属性来指定需要自动填充的字段。当执行插入或更新操作时Spring 会自动为这些字段填充值。
示例配置自动填充字段
TableField(fill FieldFill.INSERT)
private LocalDateTime createTime;TableField(fill FieldFill.INSERT_UPDATE)
private LocalDateTime updateTime;4.2 自定义填充规则
如果需要自定义填充规则例如在创建时使用自定义的时间格式或设置特定的字段值可以在 MetaObjectHandler 中进行实现。
示例自定义填充规则
Override
public void insertFill(MetaObject metaObject) {this.strictInsertFill(metaObject, createTime, LocalDateTime.class, LocalDateTime.now()); // 自动填充当前时间this.strictInsertFill(metaObject, status, Integer.class, 1); // 自定义填充规则status 默认值为 1
}在此示例中我们不仅自动填充 createTime 字段还将 status 字段的默认值设置为 1。 5. 总结
自动填充功能 是 MyBatis-Plus 的一项强大特性能够减少手动设置系统字段的工作提升开发效率。通过 TableField 注解中的 fill 属性开发者可以轻松配置需要自动填充的字段如 创建时间 和 更新时间。自定义填充规则 允许开发者在插入和更新时根据需求设置字段的默认值进一步增强了灵活性。使用 MetaObjectHandler 接口开发者可以灵活控制自动填充的字段在 insertFill 和 updateFill 方法中定义自动填充规则。
通过 MyBatis-Plus 提供的自动填充功能开发者可以更加高效地进行数据处理减少代码冗余并确保系统字段的一致性和正确性。