mybatis-plus公共字段自动填充与ThreadLocal

发布时间 2023-08-19 21:35:06作者: 小徐同学x

1、为什么使用mybatisplus自动填充

在项目开发中,我们会发现有一些数据库表字段是每个表都有的,在之前针对这些字段我们的目前的处理方式就是 增加或者修改的时候一个一个的去赋值,如果都按这样的方法进行操作的话,那我们就需要在每个业务方法中进行操作,这样会显得我们的代码过于冗余、繁琐。

2、实现步骤

注解填充字段 @TableField(… fill = FieldFill.INSERT)

把每个数据库表字段在每个表中都有的加上@TableField注解。注意属性赋值类型。

 

②自定义元数据对象处理器

下面的对应公共字段将自动填充

③Controller就用再像前面那样赋值了

3、ThreadLocal

 

注意上述步骤二中,给createUser赋值,由于该类不能从Session中获取userid,所以我们根据ThreadLocal线程性质,创建一个BaseContext类,就是一个ThreadLocal封装工具类,ThreadLocal原理和Session类似,也是在一个线程中,线程id不变。下面两个方法,一个设置数值,一个获取数值。

我们在过滤器中,就是判断登录是否成功的地方,将用户id保存到里面。

在MyMetaObjecthandler类中给createUser赋值。