国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JSP > 正文

詳解Spring data 定義默認(rèn)時(shí)間與日期的實(shí)例

2024-09-05 00:23:18
字體:
供稿:網(wǎng)友

詳解Spring data 定義默認(rèn)時(shí)間與日期的實(shí)例

前言:

需求是這樣的:

1. 創(chuàng)建時(shí)間與更新時(shí)間只能由數(shù)據(jù)庫產(chǎn)生,不允許在實(shí)體類中產(chǎn)生,因?yàn)槊總€(gè)節(jié)點(diǎn)的時(shí)間/時(shí)區(qū)不一定一直。另外防止人為插入自定義時(shí)間時(shí)間。

2. 插入記錄的時(shí)候創(chuàng)建默認(rèn)時(shí)間,創(chuàng)建時(shí)間不能為空,時(shí)間一旦插入不允許日后在實(shí)體類中修改。

 3. 記錄創(chuàng)建后更新日志字段為默認(rèn)為 null 表示該記錄沒有被修改過。一旦數(shù)據(jù)被修改,修改日期字段將記錄下最后的修改時(shí)間。

4. 甚至你可以通過觸發(fā)器實(shí)現(xiàn)一個(gè)history 表,用來記錄數(shù)據(jù)的歷史修改,詳細(xì)請參考作者另一部電子書《Netkiller Architect 手札》數(shù)據(jù)庫設(shè)計(jì)相關(guān)章節(jié)。

10.1.6. 默認(rèn)時(shí)間規(guī)則

10.1.6.1. CreatedDate

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

但是這些只能作用于實(shí)體類。

@CreatedDate  private Date createdDateTime;

10.1.6.3. 數(shù)據(jù)庫級(jí)別的默認(rèn)創(chuàng)建日期時(shí)間定義

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; }}

對應(yīng)數(shù)據(jù)庫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. 數(shù)據(jù)庫級(jí)別的默認(rèn)創(chuàng)建日期與更新時(shí)間定義

需求是這樣的:

1. 創(chuàng)建時(shí)間與更新時(shí)間只能由數(shù)據(jù)庫產(chǎn)生,不允許在實(shí)體類中產(chǎn)生,因?yàn)槊總€(gè)節(jié)點(diǎn)的時(shí)間/時(shí)區(qū)不一定一直。另外防止人為插入自定義時(shí)間時(shí)間。

2. 插入記錄的時(shí)候創(chuàng)建默認(rèn)時(shí)間,創(chuàng)建時(shí)間不能為空,時(shí)間一旦插入不允許日后在實(shí)體類中修改。

3. 記錄創(chuàng)建后更新日志字段為默認(rèn)為 null 表示該記錄沒有被修改過。一旦數(shù)據(jù)被修改,修改日期字段將記錄下最后的修改時(shí)間。

4. 甚至你可以通過觸發(fā)器實(shí)現(xiàn)一個(gè)history 表,用來記錄數(shù)據(jù)的歷史修改,詳細(xì)請參考作者另一部電子書《Netkiller Architect 手札》數(shù)據(jù)庫設(shè)計(jì)相關(guān)章節(jié)。

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; // 創(chuàng)建時(shí)間 @Column(insertable = false, updatable = false, columnDefinition = "TIMESTAMP DEFAULT CURRENT_TIMESTAMP") private Date ctime;  // 修改時(shí)間 @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; }}

對應(yīng)數(shù)據(jù)庫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. 最后修改時(shí)間

需求:記錄最后一次修改時(shí)間

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;}

產(chǎn)生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 定義默認(rèn)時(shí)間與日期的實(shí)例,如有疑問請留言或者到本站社區(qū)交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!


注:相關(guān)教程知識(shí)閱讀請移步到JSP教程頻道。
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 定日县| 化州市| 千阳县| 隆安县| 荔浦县| 三台县| 镇原县| 高唐县| 都匀市| 都兰县| 海门市| 景洪市| 文山县| 德令哈市| 秭归县| 通辽市| 内丘县| 嘉黎县| 嘉祥县| 承德县| 四子王旗| 杂多县| 陵川县| 蒙山县| 资阳市| 尼勒克县| 龙山县| 定安县| 湖北省| 巫溪县| 华蓥市| 攀枝花市| 华坪县| 田东县| 宜黄县| 中阳县| 马龙县| 奎屯市| 镶黄旗| 神池县| 如东县|