像登记人,登记时间,修改人,修改时间,都进行统一处理,避免重复的代码
ThreadLocal获取当前用户id

第一步、加上@TableField注解

  1. /**
  2. * 登记人
  3. */
  4. @TableField(fill = FieldFill.INSERT)
  5. private String create_username;
  6. /**
  7. * 登记人ID
  8. */
  9. @TableField(fill = FieldFill.INSERT)
  10. private Long create_userid;

第二步,定义数据对象处理器

  1. package com.tj.utils;
  2. import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
  3. import com.tj.system.domain.Users;
  4. import lombok.extern.slf4j.Slf4j;
  5. import org.apache.ibatis.reflection.MetaObject;
  6. import org.springframework.stereotype.Component;
  7. /**
  8. * 自定义元数据对象处理器和@@TableField(fill = FieldFill.INSERT) 搭配使用的
  9. */
  10. @Component
  11. @Slf4j
  12. public class MyMetaObjecthandler implements MetaObjectHandler {
  13. //新增操作,自动填充
  14. @Override
  15. public void insertFill(MetaObject metaObject) {
  16. //日期还是在数据库上设置
  17. // metaObject.setValue("timeadd", LocalDateTime.now());
  18. metaObject.setValue("create_userid", getUser().getId());
  19. metaObject.setValue("create_username", getUser().getUser_name());
  20. }
  21. //更新操作,自动填充
  22. @Override
  23. public void updateFill(MetaObject metaObject) {
  24. metaObject.setValue("update_userid", getUser().getId());
  25. metaObject.setValue("update_username", getUser().getUser_name());
  26. }
  27. //从threadLocal线程上获取用户信息
  28. private Users getUser() {
  29. return BaseContext.getUser();
  30. }
  31. }