全网整合营销服务商

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

免费咨询热线: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 


相关文章: 网站视频制作书签怎么做,ie浏览器怎么将网站固定在书签工具栏?  阿里云网站搭建费用解析:服务器价格与建站成本优化指南  Android使用GridView实现日历的简单功能  如何快速搭建安全的FTP站点?  网站规划与制作是什么,电子商务网站系统规划的内容及步骤是什么?  如何在Golang中使用replace替换模块_指定本地或远程路径  如何通过VPS建站无需域名直接访问?  香港服务器租用每月最低只需15元?  建站之星展会模板:智能建站与自助搭建高效解决方案  武汉网站制作费用多少,在武汉武昌,建面100平方左右的房子,想装暖气片,费用大概是多少啊?  建站之星导航菜单设置与功能模块配置全攻略  已有域名和空间,如何快速搭建网站?  如何彻底删除建站之星生成的Banner?  如何快速搭建高效WAP手机网站吸引移动用户?  如何在Ubuntu系统下快速搭建WordPress个人网站?  建站一年半SEO优化实战指南:核心词挖掘与长尾流量提升策略  沈阳个人网站制作公司,哪个网站能考到沈阳事业编招聘的信息?  如何快速搭建虚拟主机网站?新手必看指南  建站168自助建站系统:快速模板定制与SEO优化指南  ppt在线制作免费网站推荐,有什么下载免费的ppt模板网站?  h5网站制作工具有哪些,h5页面制作工具有哪些?  建站主机如何安装配置?新手必看操作指南  网站制作服务平台,有什么网站可以发布本地服务信息?  高端建站如何打造兼具美学与转化的品牌官网?  如何将凡科建站内容保存为本地文件?  建站VPS能否同时实现高效与安全翻墙?  建站10G流量真的够用吗?如何应对访问高峰?  ppt制作免费网站有哪些,ppt模板免费下载网站?  如何通过商城免费建站系统源码自定义网站主题?  在线教育网站制作平台,山西立德教育官网?  制作宣传网站的软件,小红书可以宣传网站吗?  如何快速搭建支持数据库操作的智能建站平台?  C++中引用和指针有什么区别?(代码说明)  高端企业智能建站程序:SEO优化与响应式模板定制开发  北京专业网站制作设计师招聘,北京白云观官方网站?  网站制作外包价格怎么算,招聘网站上写的“外包”是什么意思?  免费ppt制作网站,有没有值得推荐的免费PPT网站?  ,南京靠谱的征婚网站?  如何处理“XML格式不正确”错误 常见XML well-formed问题解决方法  建站主机选哪种环境更利于SEO优化?  如何选择长沙网站建站模板?H5响应式与品牌定制哪个更优?  如何在Windows 2008云服务器安全搭建网站?  网站设计制作公司地址,网站建设比较好的公司都有哪些?  用v-html解决Vue.js渲染中html标签不被解析的问题  营销式网站制作方案,销售哪个网站招聘效果最好?  全景视频制作网站有哪些,全景图怎么做成网页?  制作网站的软件免费下载,免费制作app哪个平台好?  再谈Python中的字符串与字符编码(推荐)  深圳网站制作培训,深圳哪些招聘网站比较好?  免费制作海报的网站,哪位做平面的朋友告诉我用什么软件做海报比较好?ps还是cd还是ai这几个软件我都会些我是做网页的? 

您的项目需求

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