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

首頁(yè) > 編程 > JSP > 正文

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

2020-07-27 21:21:01
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

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

前言:

需求是這樣的:

1. 創(chuàng)建時(shí)間與更新時(shí)間只能由數(shù)據(jù)庫(kù)產(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 表示該記錄沒(méi)有被修改過(guò)。一旦數(shù)據(jù)被修改,修改日期字段將記錄下最后的修改時(shí)間。

4. 甚至你可以通過(guò)觸發(fā)器實(shí)現(xiàn)一個(gè)history 表,用來(lái)記錄數(shù)據(jù)的歷史修改,詳細(xì)請(qǐng)參考作者另一部電子書《Netkiller Architect 手札》數(shù)據(jù)庫(kù)設(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ù)庫(kù)級(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; }}

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

需求是這樣的:

1. 創(chuàng)建時(shí)間與更新時(shí)間只能由數(shù)據(jù)庫(kù)產(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 表示該記錄沒(méi)有被修改過(guò)。一旦數(shù)據(jù)被修改,修改日期字段將記錄下最后的修改時(shí)間。

4. 甚至你可以通過(guò)觸發(fā)器實(shí)現(xiàn)一個(gè)history 表,用來(lái)記錄數(shù)據(jù)的歷史修改,詳細(xì)請(qǐng)參考作者另一部電子書《Netkiller Architect 手札》數(shù)據(jù)庫(kù)設(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; }}

對(duì)應(yīng)數(shù)據(jù)庫(kù)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語(yǔ)句如下

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í)例,如有疑問(wèn)請(qǐng)留言或者到本站社區(qū)交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 寻乌县| 呈贡县| 托里县| 阿坝| 英超| 泽普县| 东光县| 博乐市| 长顺县| 芮城县| 阳信县| 正安县| 普格县| 宜宾县| 额济纳旗| 上蔡县| 华坪县| 冕宁县| 阿城市| 邮箱| 盐边县| 乐陵市| 霍城县| 肃宁县| 宁河县| 勃利县| 丹棱县| 荔波县| 灵台县| 大连市| 习水县| 深泽县| 沧州市| 府谷县| 涟源市| 于都县| 威信县| 盐津县| 青河县| 通道| 涟水县|