a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁 > 編程 > JSP > 正文

詳解Spring data 定義默認時間與日期的實例

2024-09-05 00:23:18
字體:
來源:轉載
供稿:網友

詳解Spring data 定義默認時間與日期的實例

前言:

需求是這樣的:

1. 創建時間與更新時間只能由數據庫產生,不允許在實體類中產生,因為每個節點的時間/時區不一定一直。另外防止人為插入自定義時間時間。

2. 插入記錄的時候創建默認時間,創建時間不能為空,時間一旦插入不允許日后在實體類中修改。

 3. 記錄創建后更新日志字段為默認為 null 表示該記錄沒有被修改過。一旦數據被修改,修改日期字段將記錄下最后的修改時間。

4. 甚至你可以通過觸發器實現一個history 表,用來記錄數據的歷史修改,詳細請參考作者另一部電子書《Netkiller Architect 手札》數據庫設計相關章節。

10.1.6. 默認時間規則

10.1.6.1. CreatedDate

Spring 提供了 import org.springframework.data.annotation.CreatedDate;

但是這些只能作用于實體類。

@CreatedDate  private Date createdDateTime;

10.1.6.3. 數據庫級別的默認創建日期時間定義

package cn.netkiller.api.domain.elasticsearch;import java.util.Date;import javax.persistence.Column;import javax.persistence.Entity;import javax.persistence.Id;import javax.persistence.Table;@Entity@Tablepublic class ElasticsearchTrash { @Id private int id; @Column(columnDefinition = "TIMESTAMP DEFAULT CURRENT_TIMESTAMP") private Date ctime; public int getId() { return id; } public void setId(int id) { this.id = id; } public Date getCtime() { return ctime; } public void setCtime(Date ctime) { this.ctime = ctime; }}

對應數據庫DDL

CREATE TABLE `elasticsearch_trash` ( `id` int(11) NOT NULL, `ctime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;

10.1.6.4. 數據庫級別的默認創建日期與更新時間定義

需求是這樣的:

1. 創建時間與更新時間只能由數據庫產生,不允許在實體類中產生,因為每個節點的時間/時區不一定一直。另外防止人為插入自定義時間時間。

2. 插入記錄的時候創建默認時間,創建時間不能為空,時間一旦插入不允許日后在實體類中修改。

3. 記錄創建后更新日志字段為默認為 null 表示該記錄沒有被修改過。一旦數據被修改,修改日期字段將記錄下最后的修改時間。

4. 甚至你可以通過觸發器實現一個history 表,用來記錄數據的歷史修改,詳細請參考作者另一部電子書《Netkiller Architect 手札》數據庫設計相關章節。

package cn.netkiller.api.domain.elasticsearch;import java.util.Date;import javax.persistence.Column;import javax.persistence.Entity;import javax.persistence.Id;import javax.persistence.Table;import javax.validation.constraints.Null;@Entity@Tablepublic class ElasticsearchTrash { @Id private int id; // 創建時間 @Column(insertable = false, updatable = false, columnDefinition = "TIMESTAMP DEFAULT CURRENT_TIMESTAMP") private Date ctime;  // 修改時間 @Column(nullable = true, insertable = false, updatable = false, columnDefinition = "TIMESTAMP NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP") private Date mtime; public int getId() { return id; } public void setId(int id) { this.id = id; } public Date getCtime() { return ctime; } public void setCtime(Date ctime) { this.ctime = ctime; } public Date getMtime() { return mtime; } public void setMtime(Date mtime) { this.mtime = mtime; }}

對應數據庫DDL

CREATE TABLE `elasticsearch_trash` ( `id` int(11) NOT NULL, `ctime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, `mtime` timestamp NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8

10.1.6.5. 最后修改時間

需求:記錄最后一次修改時間

package cn.netkiller.api.domain.elasticsearch;import java.util.Date;import javax.persistence.Column;import javax.persistence.Entity;import javax.persistence.Id;import javax.persistence.Table;@Entity@Tablepublic class ElasticsearchTrash { @Id private int id; @Column(columnDefinition = "TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP") private Date lastModified;}

產生DDL語句如下

CREATE TABLE `elasticsearch_trash` ( `id` int(11) NOT NULL, `ctime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8; 

以上就是Spring data 定義默認時間與日期的實例,如有疑問請留言或者到本站社區交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!


注:相關教程知識閱讀請移步到JSP教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 欧美日韩在线一区二区 | 午夜大片网| 97人人看 | 91日韩欧美 | 国产毛片在线 | 国产精品久久久久久久久久三级 | 久久首页 | 欧美一区二区 | 亚洲第一免费视频网站 | 久久99精品久久久久久琪琪 | 国产成人精品久久 | 黄色激情网站 | 成人影院网站ww555久久精品 | 国产一级视频在线播放 | 国产三级视频 | 日韩不卡 | 成人深夜福利在线观看 | 999免费视频 | 国产精品原创巨作av色鲁 | 久久99久久99精品 | 在线视频日韩 | 欧美一区二区视频 | 久久99精品国产麻豆婷婷洗澡 | 中国一级大黄大黄大色毛片 | 国产视频h | 欧美日韩一区二区视频在线观看 | 黄色网免费看 | 国产福利在线免费 | 自拍偷拍视频网站 | 国产又色又爽又黄 | 少妇无套高潮一二三区 | 伊人网视频 | 国产精品成人3p一区二区三区 | 午夜精品一区 | 亚洲成人日本 | 黄色一级网站 | 亚洲国产高清在线 | 午夜免费电影 | 亚洲国产精品久久久久久 | 最新中文字幕在线 | 中文字幕加勒比 |