博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用MyBatis Plus自动添加数据库表中的创建时间、创建者、更新时间、更新者
阅读量:7062 次
发布时间:2019-06-28

本文共 3407 字,大约阅读时间需要 11 分钟。

hot3.png

使用到Sringboot、Mybatis Plus、Shiro、Mysql

1、创建一张部门表,表结构

CREATE TABLE `sys_dept` (

  `dept_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '部门id',
  `parent_id` bigint(20) DEFAULT '0' COMMENT '父部门id',
  `dept_name` varchar(30) DEFAULT '' COMMENT '部门名称',
  `order_num` int(4) DEFAULT '0' COMMENT '显示顺序',
  `status` tinyint(1) DEFAULT '0' COMMENT '部门状态(0:正常 1:停用)',
  `create_by` varchar(64) DEFAULT '' COMMENT '创建者',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  `update_by` varchar(64) DEFAULT '' COMMENT '更新者',
  `update_time` datetime DEFAULT NULL COMMENT '更新时间',
  `remark` varchar(200) DEFAULT '' COMMENT '备注',
  PRIMARY KEY (`dept_id`)
) ENGINE=InnoDB AUTO_INCREMENT=27 DEFAULT CHARSET=utf8

2、配置文件中添加下面的代码

@Configurationpublic class MyBatisPlusConfig {    /**     * 自动填充功能     * @return     */    @Bean    public GlobalConfig globalConfig() {        GlobalConfig globalConfig = new GlobalConfig();        globalConfig.setMetaObjectHandler(new MetaHandler());        return globalConfig;    }}

3、MetaHandler类的代码

/** * 处理新增和更新的基础数据填充,配合BaseEntity和MyBatisPlusConfig使用 */@Componentpublic class MetaHandler implements MetaObjectHandler {    private static final Logger logger = LoggerFactory.getLogger(MetaHandler.class);    /**     * 新增数据执行     * @param metaObject     */    @Override    public void insertFill(MetaObject metaObject) {        SysUserEntity userEntity = ShiroUtil.getUser();        this.setFieldValByName("createTime", new Date(), metaObject);        this.setFieldValByName("createBy", userEntity.getLoginName(), metaObject);        this.setFieldValByName("updateTime", new Date(), metaObject);        this.setFieldValByName("updateBy", userEntity.getLoginName(), metaObject);    }    /**     * 更新数据执行     * @param metaObject     */    @Override    public void updateFill(MetaObject metaObject) {        SysUserEntity userEntity = ShiroUtil.getUser();        this.setFieldValByName("updateTime", new Date(), metaObject);        this.setFieldValByName("updateBy", userEntity.getLoginName(), metaObject);    }}

4、执行正常的增删改操作,例如新增

@RequiresPermissions("sys:dept:add")@PostMapping("/add")@ResponseBodypublic R add(@RequestBody SysDeptEntity deptEntity) {    logger.info("添加信息={}", deptEntity);    sysDeptService.save(deptEntity); // 不再需要设置setCreateBy、setCreateTime、setUpdateBy、setUpdateTime操作,代码更优美    return R.ok();}

5、SysDeptEntity类代码

@Data@TableName("sys_dept")public class SysDeptEntity extends BaseEntity {    private static final long serialVersionUID = 1L;    /**     * 部门ID     **/    @TableId    private Long deptId;    /**     * 部门父节点ID     **/    private Long parentId;    /**     * 部门名称     **/    private String deptName;    /**     * 显示顺序     **/    private Integer orderNum;    /**     * 用户状态(0:正常 1:禁用)     **/    private Integer status;    @TableField(exist = false)    private List
children;}

6、BaseEntity类代码

/** * 基础Bean */@Datapublic class BaseEntity implements Serializable {    @TableField(value = "create_by", fill = FieldFill.INSERT) // 新增执行    private String createBy;    @TableField(value = "create_time", fill = FieldFill.INSERT)    private Date createTime;    @TableField(value = "update_by", fill = FieldFill.INSERT_UPDATE) // 新增和更新执行    private String updateBy;    @TableField(value = "update_Time", fill = FieldFill.INSERT_UPDATE)    private Date updateTime;    @TableField(value = "remark")    private String remark;}

转载于:https://my.oschina.net/654476371/blog/3054503

你可能感兴趣的文章
MySQL基础值 存储过程和函数
查看>>
IOS笔记-C语言中的指针
查看>>
jstack和线程dump分析
查看>>
移动端前端适配方案20170707
查看>>
dubbo开发前戏--ZooKeeper集群部署(3.4.6)
查看>>
淘宝网质量属性
查看>>
Silverlight DoubleClickHelper 双击事件模拟类
查看>>
函数进阶
查看>>
一个打开文件时可以改进的细节(window,linux都有这个问题)
查看>>
保护模式下的特权级转换总结
查看>>
caffe 逐步调试
查看>>
[转]界面设计速成
查看>>
rabbitmq集群步骤
查看>>
写一个自定义的控件接口 C#
查看>>
Sublime Text 2的快速入门和常用技巧
查看>>
什么是关系型数据库?
查看>>
数据结构实验之栈一:进制转换
查看>>
Linux软件包安装与卸载
查看>>
浏览器各种尺寸获取
查看>>
博客云第二周作业
查看>>