国产探花免费观看_亚洲丰满少妇自慰呻吟_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ā)表
主站蜘蛛池模板: 枣强县| 紫金县| 肃宁县| 五华县| 碌曲县| 威海市| 钦州市| 天柱县| 宁国市| 昌平区| 松阳县| 安吉县| 沁源县| 定结县| 女性| 宝应县| 应城市| 当阳市| 远安县| 扶沟县| 山东省| 多伦县| 阿克苏市| 江达县| 城口县| 长治市| 盐亭县| 武城县| 呼图壁县| 丁青县| 隆子县| 大荔县| 和平区| 贡嘎县| 新田县| 晴隆县| 大冶市| 朝阳区| 顺昌县| 若尔盖县| 易门县|