欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

java實現(xiàn)mysql自動更新創(chuàng)建時間與更新時間的兩種方式

 更新時間:2024年01月21日 09:41:16   作者:liulala16  
在實際開發(fā)中,每條數(shù)據(jù)的創(chuàng)建時間和修改時間,盡量不需要應(yīng)用程序去記錄,而由數(shù)據(jù)庫獲取當(dāng)前時間自動記錄創(chuàng)建時間,本文主要介紹了java實現(xiàn)mysql自動更新創(chuàng)建時間與更新時間的兩種方式,感興趣的可以了解一下

一:通過數(shù)據(jù)庫自身實現(xiàn)

1 、創(chuàng)建表的時候加上  create_time  與   update_time 兩個字段

  create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '創(chuàng)建時間',
  update_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新時間',

2、若表已經(jīng)存在,這兩個字段不存在,則添加這兩個字段 

ALTER TABLE `table_name`
ADD COLUMN  `create_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '創(chuàng)建時間';

ALTER TABLE `table_name`
ADD COLUMN `update_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改時間' 

3、若表與這兩個字段均存在,但字段不是自動獲取數(shù)據(jù)庫時間,則修改字段

ALTER TABLE `table_name`
MODIFY COLUMN  `create_time` datetime NULL DEFAULT CURRENT_TIMESTAMP COMMENT '創(chuàng)建時間';

ALTER TABLE `table_name`
MODIFY COLUMN `update_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改時間' 

4、可以使用可視化工具設(shè)置,以navicat為例

1)鼠標(biāo)右鍵 設(shè)計表

2)選擇添加字段,字段名為 create_time ,類型為 timestamp,默認(rèn) CURRENT_TIMESTAMP

3)選中根據(jù)當(dāng)前時間戳更新

二:通過mybatisplus的TableField注解添加

1)在實體類上的createTime與updateTime上添加注解:    

    @TableField(fill = FieldFill.INSERT) 
    private LocalDateTime createTime;

    @TableField(fill = FieldFill.INSERT_UPDATE) 
    private LocalDateTime updateTime;

2)自定義元數(shù)據(jù)對象處理器繼承MetaObjectHandler接口,實現(xiàn)insertFill與updateFill方法,這兩個接口類似攔截器,在執(zhí)行數(shù)據(jù)庫insert與update操作的時候自動執(zhí)行這兩個方法,因此如果有創(chuàng)建人與修改人等需要自動創(chuàng)建修改的字段也可以在其中添加

import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import lombok.extern.slf4j.Slf4j;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.stereotype.Component;
import java.time.LocalDateTime;

/**
 * 自定義元數(shù)據(jù)對象處理器
 */
@Component
@Slf4j
public class MyMetaObjecthandler implements MetaObjectHandler {
    /**
     * 插入操作,自動填充
     * @param metaObject
     */
    @Override
    public void insertFill(MetaObject metaObject) {
        log.info("公共字段自動填充[insert]...");
       
        metaObject.setValue("createTime", LocalDateTime.now());
        metaObject.setValue("updateTime",LocalDateTime.now());     
    }

    /**
     * 更新操作,自動填充
     * @param metaObject
     */
    @Override
    public void updateFill(MetaObject metaObject) {
        log.info("公共字段自動填充[update]...");

        metaObject.setValue("updateTime",LocalDateTime.now());       
    }
}

三:若時間與當(dāng)前時間相差8小時,則在my.conf文件中的[mysqld]節(jié)點設(shè)置時區(qū)參數(shù)

default-time-zone=Asia/Shanghai

若是5.7版本則是如下配置

default-time-zone = '+8:00'

如果mysql是docker創(chuàng)建的,則需要調(diào)整mysql容器內(nèi)的系統(tǒng)日期時間

//1、把當(dāng)前宿主機(jī)的時區(qū)信息復(fù)制到mysql容器的時區(qū)中
docker cp /usr/share/zoneinfo/Asia/Shanghai 容器名稱或Id:etc/localtime
 
//2、重啟mysql服務(wù)即可
docker restart 容器名稱或Id

到此這篇關(guān)于java實現(xiàn)mysql自動更新創(chuàng)建時間與更新時間的兩種方式的文章就介紹到這了,更多相關(guān)java mysql自動更新時間內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家! 

相關(guān)文章

最新評論