当前位置: 首页 > news >正文

免费行情网站软件ipad 设计网站

免费行情网站软件,ipad 设计网站,数据库作业代做网站,黑群晖建设个人网站MyBatis-Plus(MP) 提供了一个非常强大的功能——自动填充功能。该功能可以在执行插入或更新操作时,自动为某些字段赋值,免去手动设置这些字段的麻烦。常见的应用场景包括 创建时间 和 更新时间 字段的自动填充,帮助开发…

MyBatis-Plus(MP) 提供了一个非常强大的功能——自动填充功能。该功能可以在执行插入或更新操作时,自动为某些字段赋值,免去手动设置这些字段的麻烦。常见的应用场景包括 创建时间更新时间 字段的自动填充,帮助开发者在处理数据时更加高效,减少人为错误。

本文将介绍 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 接口来实现字段的自动填充功能。开发者需要实现该接口,并重写 insertFillupdateFill 方法。

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:在插入操作时自动填充字段,例如将当前时间赋值给 createTimeupdateTime 字段。
  • 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 会自动为 createTimeupdateTime 字段填充当前时间,无需开发者显式赋值。

User user = new User();
user.setName("John");
userService.save(user);  // 自动填充 createTime 和 updateTime

4. 配置与自定义填充规则

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 接口,开发者可以灵活控制自动填充的字段,在 insertFillupdateFill 方法中定义自动填充规则。

通过 MyBatis-Plus 提供的自动填充功能,开发者可以更加高效地进行数据处理,减少代码冗余,并确保系统字段的一致性和正确性。 🚀

http://www.yayakq.cn/news/432301/

相关文章:

  • 网站网络设计是怎么做的网页设计师学历要求
  • 建设网站企业网上银行登录入口美团网站开发形式
  • 做网站江西外贸建站行业好做吗
  • 做网站含营销导航网站 win8风格
  • 网站制作推广需要多少钱手工艺品网站建设方案
  • 网站公司企业宗旨网站建设实训个人总结1000字
  • 替朋友做网站厦门网站设计培训公司
  • 贵州省住房和建设厅网网站wordpress软件分享
  • 怎么查那些人输入做网站广州seo团队
  • 金坛做网站365网站
  • 如何用百度上传图片做网站外链frontpage做网站
  • 东莞网站建设员微网站开发案例
  • 企业网站建设如何去规划网页版qq安全中心登录入口
  • django做企业级网站学校校园网站建设服务
  • 无锡网站制作高端网站优化心得
  • 制作介绍的网站模板做瞹网站
  • 网站模板之家免费下载建设信用卡分期购物网站
  • 什么是网站前台电商推广和网络推广的区别
  • 网站站内链接怎么做wordpress标签扩展
  • 网网站建设与设计郑州网站建设找三牛
  • 信丰做网站重庆网站制作设计获客
  • 中山网站建设的公司查询一个网站是用什么系统做的
  • 灯具公司网站模板广告网站建设制作设计服务商
  • 新企业如何在国税网站上做套餐专业网页制作软件都能帮助用户组织和管理
  • 网站怎么对接微信支付宝wordpress编辑慢
  • 网站后来功能重庆企业免费建站
  • 点网站建设做360网站优化快速排
  • 做四级题目的网站网页编辑软件哪个好
  • 四川住房和城乡建设厅网站主页南宁企业网站设计
  • 网站psd下载悟空建站seo服务