mybatis在指定库建表_使用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=InnoDB?AUTO_INCREMENT=27?DEFAULT?CHARSET=utf8
2、配置文件中添加下面的代碼
@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、執行正常的增刪改操作,例如新增
@RequiresPermissions("sys:dept:add")
@PostMapping("/add")
@ResponseBody
public 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
*/
@Data
public 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;
}
總結
以上是生活随笔為你收集整理的mybatis在指定库建表_使用MyBatis Plus自动添加数据库表中的创建时间、创建者、更新时间、更新者...的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: vue 高德地图 不同区域显示不同颜色_
- 下一篇: LeetCode 547. 朋友圈(图的
