👨🎓作者:bug菌 ✏️博客:CSDN、掘金等 💌公众号:猿圈奇妙屋 🚫特别声明:原创不易,转载请附上原文出处链接和本文声明,谢谢配合。 🙏版权声明:文章里可能部分文字或者图片来源于互联网或者百度百科,如有侵权请联系bug菌处理。
接下来的这几期,bug菌想跟大家分享一下自己昨天刚接到一个临时的需求,热乎着呢,想分享一下自己是如何面对临时需求并制定整个开发周期,其中包括从梳理业务到创建业务表再到实现业务逻辑形成闭环再到与前端对接,其中会穿插一些业务拓展及功能性拓展,这一条龙流程在线与大家一起见证,分享给刚入门的小伙伴,希望对你们有所帮助。
环境说明:idea2019.3 + springboot2.3.1.REALSE + mybati-plus3.2.0 + mysql5.6 + jdk1.8
接下来,想请大家思考个问题,对于整个项目的业务表,不知道你们有咩有发现一件事,就是很多表都会带有几个字段,所谓的万油精字段,那我们何不封装成一个通用实体呢?对不对,为了减少冗余代码,增强代码质量。所以我直接将所有表中通用字段都统计了一遍,却发现有一部分字段每张表基本都涉及,比如uuid,creator、updator、create_time及update_time,总共将近20张表,其中这些字段在14张表中是有完整出现的,所以,猜猜我接下来要干嘛?
对的,被你们猜对了,第一步可以将这些通用字段都抽取出来,我这就直接将该通用字段抽到一个新实体中,且命名为:BaseEntity.java。
具体添加大家可以看我这里:
BaseEntity.java
/**
* entity父类重写toString方法,让对象输出时为json
*
* @Author luoYong
* @Date
@Data
@ApiModel(value = "实体基础信息", description = "实体基础信息")
public class BaseEntity implements Serializable {
private static final long serialVersionUID = 1L;
private String id;
protected Date createTime;
protected String createBy;
protected Date updateTime;
protected
所以对于带有这些字段的实体,我们就可以直接继承BaseEntity即可。比如:
public class SysUserEntity extends BaseEntity implements Serializable
public class SysRoleEntity extends BaseEntity implements Serializable
其实这也是为了我们接下来教大家的一种拓展。对于这部分通用字段的内容填充,在日常的增删改过程中,赋值逻辑,代码是不是大量重复了,对吧,你们仔细想想,是不是这部分字段赋值逻辑都是一模一样的,获取登录人信息设置创建人,修改人,然后new Date()获取系统时间。那我们对这一块是不是封装一个工具类统一处理呢?就跟我们处理通用字段一样。
那么大家有考虑怎么实现吗?有小伙伴就会说实现方式很多呀,比如封装一个专门赋值的工具类,说到底还是要你去做这部分的赋值,只是说需要你手动加的代码少了而已,虽然也可以,但是不够优雅,还有没有更优雅的方式,有!使用aop切面请求,在调用insert或update时,获取实体然后将通用字段信息赋值,这是最开始的玩法,但是现在啊,我不教学你那么复杂的实现方式,重复造轮子不好玩,我要的是你们能现学现用,而这一期的内容,我打算放在下期进行教学,敬请期待呀。