首页 > 其他分享 >mybatis-plus公共字段自动填充与ThreadLocal

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

时间:2023-08-19 21:47:44浏览次数:38  
标签:填充 自动 ThreadLocal Session 线程 mybatis plus 赋值

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

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

2、实现步骤

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

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

 

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

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

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

3、ThreadLocal

 

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

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

在MyMetaObjecthandler类中给createUser赋值。

 

标签:填充,自动,ThreadLocal,Session,线程,mybatis,plus,赋值
From: https://www.cnblogs.com/xdqx/p/17643159.html

相关文章

  • ThreadLocal
    ThreadLocal的作用ThreadLocal主要就是让每个线程绑定自己的值,就相当于是一个储存数据的盒子,盒子中可以储存每个线程的私有数据,当创建了ThreadLocal变量那么访问这个变量的每个线程都会有这个变量的本地副本他们可以使用get() 和set()方法来获取默认值或将其值更改为当前线程......
  • ThreadLocal 详解
    ThreadLocal中ThreadLocalMap的数据结构?Thread类有一个类型为ThreadLocal.ThreadLocalMap的实例变量threadLocals,也就是说每个线程有一个自己的ThreadLocalMap。ThreadLocalMap有自己的独立实现,可以简单地将它的key视作ThreadLocal,value为代码中放入的值(实际上key并不是ThreadLo......
  • Threadlocal
    一:Threadlocal的key是弱引用,那么在Threadlocal.get()的时候,发生GC之后,key否为nul!?答:在ThreadLocal中,key是使用弱引用的。在执行ThreadLocal.get()方法时,如果发生了垃圾回收(GC),对应的key会自动被回收,并在下一次ThreadLocal操作时被剔除 二:ThreadLocal中ThreadLocalMap的数据......
  • ThreadLocal的作用以及其存在的问题
    ThreadLocal是JDK自带的一个类,他的作用是为每个线程中创建专属本地变量,这些变量只能被当前线程访问和修改,其他线程无法访问,当你创建了一个ThreadLocal里的变量后,每个访问这个变量的线程都会获得一个此变量的本地副本,同时THreadLocal提供了get()、set()方法来获取默认值,或将其值更......
  • mybatis分页插件
    引入依赖<!--core--><dependency><groupId>com.juxi</groupId><artifactId>juxi-common-core</artifactId><exclusions><exclusion><groupId>com.baomidou</groupId>......
  • Mybatis-Plus代码生成器
    AutoGenerator是MyBatis-Plus的代码生成器,通过AutoGenerator可以快速生成Entity、Mapper、MapperXML、Service、Controller等各个模块的代码,极大的提升了开发效率。测试:packagecom.aiit.mybatisplusdemo;​importcom.baomidou.mybatisplus.annotation.DbType;import......
  • MyBatis Mapper映射处理CLOB和BLOB类型
    ​Mybatis的MapperXML映射文件应该处理数据库字段类型为CLOB和BLOB类型的数据呢?首先我们先看下CLOB和BLOB这两种数据类型的介绍。介绍使用Mybatis时涉及到两种特殊类型的处理,分别是Blob(BinaryLargeObject)和Clob(CharacterLargeObject)。Blob表示二进制大对象字段,而Clob则表示......
  • 学习ruoyi-flowable-plus
    20230817,学习1小时30分钟1.后端启动后没有生成工作流相关表,例如ACT_表,导致启动失败(flowable初始化建表失败问题):原因:需要增加配置database-schema:scottflowable:#关闭定时任务jobasync-executor-activate:false#库与数据库表结构不一致时,会自动将数据库表结构......
  • 关于Mybatis 和 Hibernate 持久层框架之间的区别
    首先,Mybatis和Hibernate都是ORM持久层框架不同点在于,MyBatis是半自动的,它需要开发人员自己手动编写SQL语句。一、MybatisMyBatis支持通过XML或注解的方式来配置需要运行的SQL语句,并且,最终由框架本身将Java对象和SQL语句映射生成最终执行的SQL,执行后,再将结果映射......
  • mybatis-plus+nacos配置中心和服务发现保姆级教程
    默认你已经看了我的Mybatis-Plus+Mysql的教程,现在有了一个简单的项目如下(之前的教程: https://www.cnblogs.com/leafstar/p/17638741.html)1.下载nacao,我这里下的是2.1.0版本提供一下我用的版本(链接:https://pan.baidu.com/s/1AVmZIhx4b0euzctJhWUlTQ?pwd=1234提取码:1234......