亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

 更新時(shí)間:2017年08月24日 08:53:19   投稿:lqh  
這篇文章主要介紹了詳解Spring data 定義默認(rèn)時(shí)間與日期的實(shí)例的相關(guān)資料,這里提供實(shí)例幫助大家學(xué)習(xí)理解這部分內(nèi)容,需要的朋友可以參考下

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

前言:

需求是這樣的:

1. 創(chuàng)建時(shí)間與更新時(shí)間只能由數(shù)據(jù)庫(kù)產(chǎn)生,不允許在實(shí)體類(lèi)中產(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í)體類(lèi)中修改。

 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)參考作者另一部電子書(shū)《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í)體類(lèi)。

@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
@Table
public 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í)體類(lèi)中產(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í)體類(lèi)中修改。

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)參考作者另一部電子書(shū)《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
@Table
public 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
@Table
public 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ì)本站的支持!

相關(guān)文章

最新評(píng)論