mysql自動填充時間的兩種實現(xiàn)方式小結
更新時間:2022年11月30日 11:41:40 作者:liudachu
這篇文章主要介紹了mysql自動填充時間的兩種實現(xiàn)方式小結,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
mysql自動填充時間的兩種方式
mysql建表的時候有兩個列,一個是createtime、另一個是updatetime
- 當插入一條數(shù)據(jù),createtime列和updatetime列由數(shù)據(jù)庫獲取當前時間自動創(chuàng)建時間
- 當修改一條記錄時,updatetime列由數(shù)據(jù)庫獲取按當前時間自動更新時間
方法一:數(shù)據(jù)庫級別
(工作中不允許你修改數(shù)據(jù)庫),一般我們采用方法二
1.在表中新增字段 create_time, update_time,記得同步實體類
2.設置createtime、updatetime的默認值為CURRENT_TIMESTAMP
3.設置updatetime列屬性ON UPDATE CURRENT_TIMESTAMP

方式二:代碼級別
(使用mybatis_plus自動填充策略實現(xiàn))
1、刪除數(shù)據(jù)庫的默認值、更新操作!

2、實體類字段屬性上需要增加注解
// 字段添加填充內容 @TableField(fill = FieldFill.INSERT) private Date createTime; @TableField(fill = FieldFill.INSERT_UPDATE) private Date updateTime;
3、編寫處理器來處理這個注解即可!即配置填充策略
import lombok.extern.slf4j.Slf4j;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.stereotype.Component;
import java.util.Date;
@Slf4j
@Component // 一定不要忘記把處理器加到IOC容器中!
public class MyMetaObjectHandler implements MetaObjectHandler {
// 插入時的填充策略
@Override
public void insertFill(MetaObject metaObject) {
log.info("start insert fill.....");
// setFieldValByName(String fieldName, Object fieldVal,MetaObjectmetaObject
// 最新的MP可以采用這個方法:this.strictInsertFill(metaObject, "createTime", Date.class, new Date());
this.setFieldValByName("createTime",new Date(),metaObject);
this.setFieldValByName("updateTime",new Date(),metaObject);
}
// 更新時的填充策略
@Override
public void updateFill(MetaObject metaObject) {
log.info("start update fill.....");
this.setFieldValByName("updateTime",new Date(),metaObject);
}
}4、測試插入
5、測試更新、觀察時間即可!
以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
Windows實現(xiàn)通過cmd命令行啟動mysql
介紹了通過Windows命令行啟動MySQL的詳細步驟,包括普通啟動和使用管理員權限的方法,以及如何登錄和查詢數(shù)據(jù),主要步驟包括修改環(huán)境變量、使用net start命令、確保以管理員身份運行CMD,以及使用MySQL命令行工具進行數(shù)據(jù)庫操作2024-10-10

