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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

二:通過(guò)mybatisplus的TableField注解添加

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

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

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

2)自定義元數(shù)據(jù)對(duì)象處理器繼承MetaObjectHandler接口,實(shí)現(xiàn)insertFill與updateFill方法,這兩個(gè)接口類似攔截器,在執(zhí)行數(shù)據(jù)庫(kù)insert與update操作的時(shí)候自動(dòng)執(zhí)行這兩個(gè)方法,因此如果有創(chuàng)建人與修改人等需要自動(dò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ù)對(duì)象處理器
 */
@Component
@Slf4j
public class MyMetaObjecthandler implements MetaObjectHandler {
    /**
     * 插入操作,自動(dòng)填充
     * @param metaObject
     */
    @Override
    public void insertFill(MetaObject metaObject) {
        log.info("公共字段自動(dòng)填充[insert]...");
       
        metaObject.setValue("createTime", LocalDateTime.now());
        metaObject.setValue("updateTime",LocalDateTime.now());     
    }

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

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

三:若時(shí)間與當(dāng)前時(shí)間相差8小時(shí),則在my.conf文件中的[mysqld]節(jié)點(diǎn)設(shè)置時(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)日期時(shí)間

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

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

相關(guān)文章

  • mysql定時(shí)刪除過(guò)期數(shù)據(jù)記錄的簡(jiǎn)單方法

    mysql定時(shí)刪除過(guò)期數(shù)據(jù)記錄的簡(jiǎn)單方法

    今天小編就為大家分享一篇mysql定時(shí)刪除過(guò)期數(shù)據(jù)記錄的簡(jiǎn)單方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-08-08
  • MySQL表字段數(shù)量限制及行大小限制詳情

    MySQL表字段數(shù)量限制及行大小限制詳情

    這篇文章主要介紹了MySQL表字段數(shù)量限制及行大小限制詳情,表的行最大的row size會(huì)限制字段數(shù)量,如果當(dāng)前row size過(guò)大就不能加字段了,更多相關(guān)需要的小伙伴可以參考下面文章詳情
    2022-07-07
  • 如何將mysql存儲(chǔ)位置遷移到一塊新的磁盤上

    如何將mysql存儲(chǔ)位置遷移到一塊新的磁盤上

    這篇文章主要介紹了如何將mysql存儲(chǔ)位置遷移到一塊新的磁盤上,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-12-12
  • MySQL一些常用高級(jí)SQL語(yǔ)句詳解

    MySQL一些常用高級(jí)SQL語(yǔ)句詳解

    對(duì)?MySQL?數(shù)據(jù)庫(kù)的查詢,除了基本的查詢外,有時(shí)候需要對(duì)查詢的結(jié)果集進(jìn)行處理。例如只取?10?條數(shù)據(jù)、對(duì)查詢結(jié)果進(jìn)行排序或分組等等,今天就給大家分享MySQL一些常用高級(jí)SQL語(yǔ)句,感興趣的朋友一起看看吧
    2022-06-06
  • MySQL多表查詢機(jī)制

    MySQL多表查詢機(jī)制

    這篇文章主要介紹了MySQL多表查詢機(jī)制,多表查詢首先離不開(kāi)等值連接,下文我們從等值連接展開(kāi)詳細(xì)內(nèi)容,具有一定的參考價(jià)值需要的小伙伴可以參考一下
    2022-03-03
  • MySQL主從同步設(shè)置中主服務(wù)器二進(jìn)制日志無(wú)法開(kāi)啟的問(wèn)題

    MySQL主從同步設(shè)置中主服務(wù)器二進(jìn)制日志無(wú)法開(kāi)啟的問(wèn)題

    這篇文章主要介紹了MySQL主從同步設(shè)置中主服務(wù)器二進(jìn)制日志無(wú)法開(kāi)啟的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • MySQL多版本并發(fā)控制MVCC詳解

    MySQL多版本并發(fā)控制MVCC詳解

    這篇文章主要介紹了MySQL多版本并發(fā)控制MVCC詳解,MVCC是通過(guò)數(shù)據(jù)行的多個(gè)版本管理來(lái)實(shí)現(xiàn)數(shù)據(jù)庫(kù)的并發(fā)控制,這項(xiàng)技術(shù)使得在InnoDB的事務(wù)隔離級(jí)別下執(zhí)行一致性讀操作有了保證
    2022-07-07
  • MySQL通過(guò)DQL實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)數(shù)據(jù)的基本查詢

    MySQL通過(guò)DQL實(shí)現(xiàn)對(duì)數(shù)據(jù)庫(kù)數(shù)據(jù)的基本查詢

    這篇文章給大家介紹了MySQL如何通過(guò)DQL進(jìn)行數(shù)據(jù)庫(kù)數(shù)據(jù)的基本查詢,文中通過(guò)代碼示例和圖文結(jié)合介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2024-01-01
  • mysql如何存儲(chǔ)地理信息

    mysql如何存儲(chǔ)地理信息

    MySQL存儲(chǔ)地理信息通常使用GEOMETRY數(shù)據(jù)類型或其子類型,為了支持這些數(shù)據(jù)類型,MySQL 提供了?SPATIAL?索引,這允許我們執(zhí)行高效的地理空間查詢,這篇文章主要介紹了mysql如何存儲(chǔ)地理信息,需要的朋友可以參考下
    2024-05-05
  • MySQL8.x使用GRANT為用戶賦權(quán)時(shí)報(bào)錯(cuò)的解決

    MySQL8.x使用GRANT為用戶賦權(quán)時(shí)報(bào)錯(cuò)的解決

    這篇文章主要介紹了MySQL8.x使用GRANT為用戶賦權(quán)時(shí)報(bào)錯(cuò)的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-04-04

最新評(píng)論