背景:数据库中多个表有时间字段,并且字段名一致 需求:该时间字段由MybatisPlus自动插入和更新,业务代码无需处理 方法: 一.创建基础实体[BaseEntity],定义需要处理的公共字段(创建时间.修改时间.创建人.修改人.备注……),供其他业务实体类继承 import com.baomidou.mybatisplus.annotations.TableField; import com.baomidou.mybatisplus.enums.FieldFill; import lombo…
1,给字段添加注解 @TableField(value = "create_time", fill = FieldFill.INSERT) 2,添加填充处理器,需要实现接口MetaObjectHandler @Component public class MyMetaObjectHandler implements MetaObjectHandler { @Override public void insertFill(MetaObject metaObject) { // 看实体类中…
对于实体中的created_on和updated_on来说,它没有必要被开发人员去干预,因为它已经足够说明使用场景了,即在插入数据和更新数据时,记录当前时间,这对于mybatis来说,通过拦截器是可以实现的,记得之前说过在jpa中实现的方法,主要通过jpa的注解实现的,因为今天的mybatis需要用到java的拦截器. 定义两个注解 @Retention(RetentionPolicy.RUNTIME) @Target( {ElementType.FIELD}) public @interfac…
经过了昨天纠结技术选型,和一大堆xml配置,终于把架子搭好了.因为最近一次做java项目也在好多年以前了(毕竟用了pytohn以后谁也不想再回来java了),java的生态发生了长足的进步,本来想从原来的项目里面拿过来一些,发现除了java还剩下一点兼容性,其他的基本都淘汰了.太悲剧了!连个轮子都没.边学边做吧!好在几个月前又背了一次java课,虽然一些新技术看文档还能应付.spring虽然有改变但是也不大,mybatis也还能凑合用.开始码代码才发现一个非常悲剧的问题.tomcat依然不支持热…
一.应用场景 平时在建对象表的时候都会有最后修改时间,最后修改人这两个字段,对于这些大部分表都有的字段,每次在新增和修改的时候都要考虑到这几个字段有没有传进去,很麻烦.mybatisPlus有一个很好的解决方案.也就是公共字段自动填充的功能.一般满足下面条件的字段就可以使用此功能: 这个字段是大部分表都会有的. 这个字段的值是固定的,或则字段值是可以在后台动态获取的. 常用的就是last_update_time,last_update_name这两个字段. 二.配置MybatisPlus 导包:…
说明 本文实现以下需求效果 创建数据时自动填充 createUserId 和 createTime 更新数据时自动填充 updateUserId 和 updateTime(每次修改都自动填充新的 updateTime 值) 软删除数据时自动填充 deleteUserId 和 deleteTime 创建 实体类 为实体类(DO)的 createUserId 和 createTime 字段配置以下 Annotation,代表标记在插入(insert into)时自动填充字段值 @TableField…
本文为Mybatis Plus系列文章的第9篇,前8篇访问地址如下: 小书MybatisPlus第1篇-整合SpringBoot快速开始增删改查 小书MybatisPlus第2篇-条件构造器的应用及总结 小书MybatisPlus第3篇-自定义SQL 小书MybatisPlus第4篇-表格分页与下拉分页查询 小书MybatisPlus第5篇-Active Record模式精讲 小书MybatisPlus第6篇-主键生成策略精讲 小书MybatisPlus第7篇-代码生成器的原理精讲及使用方法 小…
1. 前言 我们在设计数据库的时候一定会带上新增.更新的时间.操作者等审计信息. 之所以带这些信息是因为假如有一天公司的数据库被人为删了,尽管可能有数据库备份可以恢复数据.但是我们仍然需要追踪到这个事是谁干的,在什么时间干的,具体干了哪些事等等,方便定责和修补.但是我们变更每条数据都要去显式变更这些信息就十分繁琐,我们希望无感知的来处理这些信息. 2. 通用方式 那么有什么好的解决思路呢?在Spring Data框架中提供@CreatedBy和@LastModifiedBy来捕捉谁创建或修改的实…
一.主键id的生成 数据库表里通常都会有一个主键id,来作为这条数据的唯一标识. 常见的方式 数据库自动增长 这种很常见了,可以做到全库唯一.因为id是天然排序的,对于涉及到排序的操作会很方便. UUID 上面的自动增长,虽然简单,但是对于分表这样的操作来说就比较麻烦.因为你在第二张插入数据的时候,需要拿到上一张表最后一个数据的id. UUID则不同,每次都一个随机唯一的值,不过因为是随机,所以也就没有排序了. redis redis也可以用来生成id,利用redis的原子操作.好处是可以不依赖…
时间代码自动填充的2种方式 数据库方式 将数据库字段create_time和update_time设置CURRENT_TIMESTAMP,create_time字段后面不需要勾选更新,update_time勾选即可 代码方式 官网: https://www.mybatis-plus.com/guide/auto-fill-metainfo.html 首先添加实体类,源码如下 @ApiModelProperty("创建时间") @TableField(fill = FieldFill.I…