全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

详解Spring data 定义默认时间与日期的实例

详解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
@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;
 }

}

对应数据库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
@Table
public 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
@Table
public 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 定义默认时间与日期的实例,如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!


# Spring  # data  # 定义默认时间与日期  # 定义默认时间与日期的实现实例  # Spring Boot中使用Spring-data-jpa实现数据库增删查改  # Spring Data JPA实现动态查询的两种方法  # Spring Data JPA 简单查询--方法定义规则(详解)  # 基于SpringMVC+Bootstrap+DataTables实现表格服务端分页、模糊查询  # SpringBoot集成Spring Data JPA及读写分离  # springboot整合spring-data-redis遇到的坑  # 更新时间  # 类中  # 你可以  # 是这样  # 自定义  # 请参考  # 为空  # 日后  # 创建日期  # 默认为  # 如有  # 希望能  # 谢谢大家  # 作用于  # 疑问请  # 实体类  # sql  # private  # pre  # brush 


相关文章: 武汉网站如何制作,黄黄高铁武穴北站途经哪些村庄?  高防服务器租用首荐平台,企业级优惠套餐快速部署  建站之星导航菜单设置与功能模块配置全攻略  建站之星如何助力企业快速打造五合一网站?  手机怎么制作网站教程步骤,手机怎么做自己的网页链接?  如何通过虚拟机搭建网站?详细步骤解析  建站之星各版本价格是多少?  ,石家庄四十八中学官网?  如何通过远程VPS快速搭建个人网站?  建站主机如何安装配置?新手必看操作指南  定制建站策划方案_专业建站与网站建设方案一站式指南  JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)  制作网站的网址是什么,请问后缀为.com和.com.cn还有.cn的这三种网站是分别是什么类型的网站?  如何在Windows虚拟主机上快速搭建网站?  如何用花生壳三步快速搭建专属网站?  浅析上传头像示例及其注意事项  广州营销型建站服务商推荐:技术优势与SEO优化解析  C++用Dijkstra(迪杰斯特拉)算法求最短路径  TestNG的testng.xml配置文件怎么写  长沙企业网站制作哪家好,长沙水业集团官方网站?  安云自助建站系统如何快速提升SEO排名?  php能控制zigbee模块吗_php通过串口与cc2530 zigbee通信【介绍】  无锡营销型网站制作公司,无锡网选车牌流程?  免费公司网站制作软件,如何申请免费主页空间做自己的网站?  建站之星安装提示数据库无法连接如何解决?  学校免费自助建站系统:智能生成+拖拽设计+多端适配  沈阳制作网站公司排名,沈阳装饰协会官方网站?  建站中国官网:模板定制+SEO优化+建站流程一站式指南  邀请函制作网站有哪些,有没有做年会邀请函的网站啊?在线制作,模板很多的那种?  潍坊网站制作公司有哪些,潍坊哪家招聘网站好?  如何配置IIS站点权限与局域网访问?  湖北网站制作公司有哪些,湖北清能集团官网?  沈阳个人网站制作公司,哪个网站能考到沈阳事业编招聘的信息?  C#怎么创建控制台应用 C# Console App项目创建方法  免费制作统计图的网站有哪些,如何看待现如今年轻人买房难的情况?  如何用IIS7快速搭建并优化网站站点?  建站之星免费模板:自助建站系统与智能响应式一键生成  如何快速搭建FTP站点实现文件共享?  建站之星后台搭建步骤解析:模板选择与产品管理实操指南  如何在IIS7上新建站点并设置安全权限?  GML (Geography Markup Language)是什么,它如何用XML来表示地理空间信息?  Swift开发中switch语句值绑定模式  黑客如何利用漏洞与弱口令入侵网站服务器?  网站专业制作公司,网站编辑是做什么的?好做吗?工作前景如何?  c# await 一个已经完成的Task会发生什么  如何在Golang中使用replace替换模块_指定本地或远程路径  c# 在高并发场景下,委托和接口调用的性能对比  如何在万网开始建站?分步指南解析  如何在沈阳梯子盘古建站优化SEO排名与功能模块?  西安专业网站制作公司有哪些,陕西省建行官方网站? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。