【Java】通过Mybatis Plus自带的方式,实现公共字段自动填充。

张开发
2026/4/18 22:02:27 15 分钟阅读

分享文章

【Java】通过Mybatis Plus自带的方式,实现公共字段自动填充。
通过Mybatis Plus自带的方式实现公共字段自动填充。第一步创建一个公共字段类加上对应注解。DatapublicclassBaseEntityimplementsSerializable{SerialprivatestaticfinallongserialVersionUID1L;TableField(valuecreate_at,fillFieldFill.INSERT)privateLocalDateTimecreateAt;TableField(valuecreate_by,fillFieldFill.INSERT)privateStringcreateBy;TableField(valueupdate_at,fillFieldFill.INSERT_UPDATE)privateLocalDateTimeupdateAt;TableField(valueupdate_by,fillFieldFill.INSERT_UPDATE)privateStringupdateBy;}第二步创建一个类实现MetaObjectHandler接口重写注解对应实现方法并且加上Component注解纳入IOC容器管理。ComponentpublicclassMyMetaObjectHandlerimplementsMetaObjectHandler{OverridepublicvoidinsertFill(MetaObjectmetaObject){StringloginIdStpUtil.isLogin()?StpUtil.getLoginIdAsString():null;this.strictInsertFill(metaObject,createAt,LocalDateTime::now,LocalDateTime.class);this.strictInsertFill(metaObject,createBy,()-loginId,String.class);this.strictInsertFill(metaObject,updateAt,LocalDateTime::now,LocalDateTime.class);this.strictInsertFill(metaObject,updateBy,()-loginId,String.class);}OverridepublicvoidupdateFill(MetaObjectmetaObject){StringloginIdStpUtil.isLogin()?StpUtil.getLoginIdAsString():null;this.strictUpdateFill(metaObject,updateAt,LocalDateTime::now,LocalDateTime.class);this.strictInsertFill(metaObject,updateBy,()-loginId,String.class);}}第三步实体类继承公共字段类实现调用Mybatis Plus自带的插入或修改方法时公共字段自动填充。DataEqualsAndHashCode(callSupertrue)TableName(user)Schema(title用户实体,description系统用户信息包含登录认证和基本信息)publicclassUserextendsBaseEntity{SerialprivatestaticfinallongserialVersionUID1L;/** * 主键ID */Schema(title用户ID)TableId(valueid,typeIdType.AUTO)privateIntegerid;/** * 用户登录邮箱 */Schema(title邮箱)TableField(email)privateStringemail;/** * BCrypt密码哈希 */Schema(title密码)TableField(password)privateStringpassword;/** * 用户昵称 */Schema(title昵称)TableField(nickname)privateStringnickname;/** * 用户角色 */Schema(title角色)TableField(role)privateStringrole;/** * 头像URL */Schema(title头像URL)TableField(avatar_url)privateStringavatarUrl;}

更多文章