使用MyBatis Plus自動新增新增資料庫表中的建立時間、建立者、更新時間、更新者
使用到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=MyISAM AUTO_INCREMENT=27 DEFAULT CHARSET=utf8
2、配置檔案中新增下面的程式碼
package com.zjc.config.mybatisplus; import com.baomidou.mybatisplus.core.config.GlobalConfig; import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler; import com.baomidou.mybatisplus.core.injector.ISqlInjector; import com.baomidou.mybatisplus.extension.injector.LogicSqlInjector; import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor; import com.baomidou.mybatisplus.extension.plugins.PerformanceInterceptor; import com.zjc.config.mybatisplus.handler.MetaHandler; import org.apache.ibatis.reflection.MetaObject; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import java.util.Properties; @Configuration public class MyBatisPlusConfig { /** * 自動填充功能 * @return */ @Bean public GlobalConfig globalConfig() { GlobalConfig globalConfig = new GlobalConfig(); globalConfig.setMetaObjectHandler(new MetaHandler()); return globalConfig; } }
3、MetaHandler類的程式碼
/** * 處理新增和更新的基礎資料填充,配合BaseEntity和MyBatisPlusConfig使用 */ @Component public 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、使用MyBatis Plus執行正常的增刪改操作,例如下面的新增
@RequiresPermissions("sys:dept:add") @PostMapping("/add") @ResponseBody public R add(@RequestBody SysDeptEntity deptEntity) { logger.info("新增資訊={}", deptEntity); sysDeptService.save(deptEntity);