👨🎓作者:bug菌
✏️博客:CSDN、掘金、infoQ、51CTO等
🎉简介:CSDN博客专家,C站历届博客之星Top50,掘金/InfoQ/51CTO等社区优质创作者,全网合计8w粉+,对一切技术感兴趣,重心偏Java方向;硬核公众号「 猿圈奇妙屋」,欢迎小伙伴们的加入,一起秃头,一起变强。
..
✍️温馨提醒:本文字数:1999字, 阅读完需:约 5 分钟
嗨,家人们,我是bug菌呀,我又来啦。今天我们来聊点什么咧,OK,接着为大家更《springboot零基础入门教学》系列文章吧。希望能帮助更多的初学者们快速入门!
小伙伴们在批阅文章的过程中如果觉得文章对您有一丝丝帮助,还请别吝啬您手里的赞呀,大胆的把文章点亮👍吧,您的点赞三连(收藏⭐+关注👨🎓+留言📃)就是对bug菌我创作道路上最好的鼓励与支持😘。时光不弃🏃🏻♀️,创作不停💕,加油☘️
一、前言🔥
环境说明:Windows10 + Idea2021.3.2 + Jdk1.8 + SpringBoot 2.3.1.RELEASE
二、背景🔥
在日常开发中,特别是一些业务系统项目,共同发现一个规律,那就是对于诸多业务表中都包含有相同的字段,比如id主键、uuid、create_time、create_by、update_by、update_time等。而这些字段也是对于有些表而言是必要存在的。
既然字段可以说是一模一样,那作为有代码洁癖的我,怎么可以忍受,每个实体都需要重复创建这些字段。我数了一下,业务规模最庞大最复杂的人员申报系统,拥有64张业务表,其中有32张表是含有以上全部字段属性的,为什么不封装??我不理解。
- 第一每个实体中都有这些字段的身影,为何不封装?
- 第二这些字段在常规的增删改中都是需要进行手动赋值,为何不抽离公共方法实现?
而今天我想做的事,就是把它们都剥离出来,改造!优雅永不过时。
- 第一抽一个公共Entity出来。
- 第二不需要人为手动为这些字段赋值。
三、实现思路🔥
思路1:
采用aop进行自定义注解法。实现很简单,为添加了自定义注解切面赋值。我就不过多介绍,重点是看思路2,方便快捷。
思路2:
采用mybatis-plus提供的@TableField 注解实现字段内容自动填充。
四、实现方案🔥
想必大家对mybatis-plus都不陌生吧,这里我就不过多介绍它了,我们直接步入正题。
第一步:引入mp依赖
<!--mybatis-plus-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.2.0</version>
</dependency>
第二步:实体类添加注解属性
在你需要自动填充的字段加上注解。我这里是已经将众多表中共同字段抽离到了一个公共实体类中,而这也是解决我上方提出的第一步。而你也可以只加到你需要自动填充的字段上,加上该注解即可。后续也可以单独在某个字段上添加,因为一定要数据库自带这些字段才行,否则直接配置肯定是会映射不上而报错的。
@TableField(fill = FieldFill.INSERT) //执行插入时自动填充
拓展:
如下是四中填充策略,你们具体根据业务进行选取。
public enum FieldFill {
/**
* 默认不处理
*/
DEFAULT,
/**
* 插入填充字段
*/
INSERT,
/**
* 更新填充字段
*/
UPDATE,
/**
* 插入和更新填充字段
*/
INSERT_UPDATE
}
如下是完整添加。供大家参考:
package com.example.review.vo;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;
import java.util.Date;
/**
* 公共属性实体类
*
* @author luoYong
* @create 2022年3月29日00:00:49
*/
@Data
public class BaseEntity {
/**
* id 生成策略为UUID
*/
@TableId(type = IdType.UUID)
private String id;
/**
* 创建者 填充策略为插入自动填充
*/
@TableField(fill = FieldFill.INSERT)
private String createBy;
/**
* 创建时间 填充策略为插入自动填充
*/
@TableField(fill = FieldFill.INSERT)
private Date createTime;
/**
* 更新者 填充策略为插入和更新填充字段
*/
@TableField(fill = FieldFill.INSERT_UPDATE)
private String updateBy;
/**
* 更新时间 填充策略为插入和更新填充字段
*/
@TableField(fill = FieldFill.INSERT_UPDATE)
private Date updateTime;
}
ok,以上这样就好啦,具体实测的话,我会在下期重点讲解,不会一次性给大家灌输太多的知识点,保证能看完就立马吸收完。
下期文章入口:如何使用MyBatis-Plus实现字段的自动填充?(下篇)
... ...
如果还想学习更多,你可以看看我的往期热文推荐哦,每天积累一个奇淫小知识,日积月累下去,你一定能成为令人敬仰的大佬的。好啦,咱们下期见~
五、往期推荐🔥
- springboot系列(一):如何创建springboot项目及启动
- springboot系列(二):yaml、properties两配置文件介绍及使用
- springboot系列(三):多环境切换,实例演示
- springboot系列(四):stater入门
- springboot系列(五):史上最最最全springboot常用注解
- springboot系列(六):mysql配置及数据库查询
- springboot系列(七):如何通过mybatis-plus实现接口增删改查
- springboot系列(八):mybatis-plus之条件构造器使用手册
- springboot系列(九):mybatis-plus之如何自定义sql
- springboot系列(十):mybatis之xml映射文件>、<=等特殊符号写法
- springboot系列(十一):实现多数据源配置,开箱即用
- springboot系列(十二):如何实现邮件发送提醒,你一定得会(准备篇)
- springboot系列(十三):如何实现发送普通邮件?你一定得会
- springboot系列(十四):如何实现发送图片、doc文档等附件邮件?你一定得会
- springboot系列(十五):如何实现静态邮件模板发送?你一定得会
- springboot系列(十六):如何实现发送邮件提醒,附完整源码
- springboot系列(十七):集成在线接口文档Swagger2
- springboot系列(十八):如何Windows安装redis?你玩过么
- springboot系列(十九):如何集成redis?不会我教你
- springboot系列(二十):如何通过redis实现手机号验证码功能
- ... ...
文末🔥
如果还想要学习更多,小伙伴们可关注bug菌专门为大家创建的专栏《springboot零基础入门教学》,从无到有,从零到一!希望能帮助到更多小伙伴们。
我是bug菌,一名想走👣出大山改变命运的程序猿。接下来的路还很长,都等待着我们去突破、去挑战。来吧,小伙伴们,我们一起加油!未来皆可期,fighting!
感谢认真读完我博客的铁子萌,在这里呢送给大家一句话,不管你是在职还是在读,绝对终身受用。
时刻警醒自己:
抱怨没有用,一切靠自己;
想要过更好的生活,那就要逼着自己变的更强,生活加油!!!