开发中的Date处理
数据库中的日期格式有以下几种:
- date:年-月-日
- time:时:分:秒
- datatime:年-月-日 时:分:秒
- timestrap:
例如,生日显示格式为'年-月-日',而创建/更新时间格式为'年-月-日 时:分:秒'。而无论数据库使用哪种时间格式,在Java中都用Date类型来表示。
表设计
1.时间格式类型
birthday设置为date类型,create_time和modified_time设置为datetime类型。日期格式不像varchar格式,它是没有长度之说的,所以使用Navicat等工具创建日期格式字段时长度项默认为0。
2.默认值
create_time和modified_time这两个字段通常是不需要业务逻辑来管理,而是由数据库来管理。
create_time是在创建记录时使用的数据库的当前时间,所以默认值为CURRENT_TIMESTAMP,一旦设置后不需要更新。
modified_time通常与create_time有相同的初始值,而且每次更新记录都需要更新该值。
下图就是Navicat中对这两个字段的设置。
实体类
实体类中定义时间类型的字段时不要设置默认值,如new Date()。
阿里代码规范中也有说明:
【强制】定义DO/DTO/VO等POJO类时,不要设定任何属性默认值。
反例:POJO类的gmtCreate默认值为new Date(),但是这个属性在数据提取时并没有置入具
体值,在更新其它字段时又附带更新了此字段,导致创建时间被修改成当前时间。
xxMapper.xml
Mapper.xml中实体字段与数据库字段映射如下图所示。这里是由MyBatis Generator自动生成的。
但是需要注意的是,生成的DDL语句需要进行一些修改。
插入操作:
更新操作:
应用程序
1.SpringMVC使用@ResponseBody返回json时,日期格式默认显示为时间戳。可以使用@JsonFormat来自定义返回格式。
@Data
public class User {
private Long id; private String username; @JsonFormat(pattern = "yyyy-MM-dd")//json返回时格式转换
private Date birthday; private String telephone; private String sex; private String address;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")//json返回时格式转换
private Date createTime;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")//json返回时格式转换
private Date modifiedTime; }
2.使用Date类型接收时间入参
方法一:Spring提供了@DateTimeFormat注解来解决上述问题。
@DateTimeFormat(pattern="yyyy-MM-dd")
private Date birthday;
方法二:使用@InitBinder
方法三:自定义全局时间格式转换器
开发中的Date处理的更多相关文章
- JS高级面试题思路(装箱和拆箱、栈和堆、js中sort()方法、.js中Date对象中的getMounth() 需要注意的、开发中编码和解码使用场景有哪些)
1.装箱和拆箱: 装箱:把基本数据类型转化为对应的引用数据类型的操作: var num = 123 // num var objNum = new Num(123) // object console ...
- 移动端开发在iOS系统中 new Date() 返回 NaN 的问题
问题: 通过 new Date() 函数将后台返回的时间('2021-11-25')获取时间戳.在 chrome 浏览器的手机模拟器中没有出现问题,但在 iPhone 真机测试的时候,显示的结果不符合 ...
- iOS项目开发中的知识点与问题收集整理①(Part 一)
前言部分 注:本文并非绝对原创 大部分内容摘自 http://blog.csdn.net/hengshujiyi/article/details/20943045 文中有些方法可能已过时并不适用于现在 ...
- JAVA开发中遇到的小白点
这里主要是自己个人开发中遇到的一些小问题,自己攒起来,来弥补自己薄弱的JAVA基础,大神不要见笑 1. DateFormat格式化的HH和hh区别: public static boolean com ...
- ios开发中的小技巧
在这里总结一些iOS开发中的小技巧,能大大方便我们的开发,持续更新. UITableView的Group样式下顶部空白处理 //分组列表头部空白处理 UIView *view = [[UIViewal ...
- IOS5中的Safari不兼容Javascript中的Date问题,做下笔录吧!奶奶的,折腾我半天!
在做Mobile终端的Website开发中,我遇到一个很懊恼的问题. 在IOS5以上版本(不包含IOS5)中的Safari浏览器能正确解释出Javascript中的 new Date('2013-10 ...
- iOS开发中调试小技巧
对于软件开发而言,调试是必须学会的技能,重要性不言而喻.对于调试的技能,基本上是可以迁移的,也就是说你以前在其他平台上掌握的很多调试技巧,很多也是可以用在iOS开发中.不同语言.不同IDE.不同平台的 ...
- iOS开发UI篇—Date Picker和UITool Bar控件简单介绍
iOS开发UI篇—Date Picker和UITool Bar控件简单介绍 一.Date Picker控件 1.简单介绍: Date Picker显示时间的控件 有默认宽高,不用设置数据源和代理 如何 ...
- (转)jQuery Mobile 移动开发中的日期插件Mobiscroll 2.3 使用说明
(原)http://www.cnblogs.com/hxling/archive/2012/12/12/2814207.html jQuery Mobile 移动开发中的日期插件Mobiscroll ...
随机推荐
- C# 如何创建Excel多级分组
在Excel中如果能够将具有多级明细的数据进行分组显示,可以清晰地展示数据表格的整体结构,使整个文档具有一定层次感.根据需要设置显示或者隐藏分类数据下的详细信息,在便于数据查看.管理的同时也使文档更具 ...
- BOM—浏览器对象模型(Browser Object Model)
1,javascript 组成部分: 1.ECMAscript(核心标准): 定义了基本的语法,比如:if for 数组 字符串 ... 2.BOM : 浏览器对象模型(Browser ...
- 后端开发者的Vue学习之路(一)
目录 前言: iview组件库示例 element组件库示例 Vue的介绍 兼容性: 学习Vue需要的前置知识: MVVM模型 补充: 安装/导入 导入Vue 安装 两种方式的区别: HelloWor ...
- Android为TV端助力 eclipse build project 出现major.minor version 52.0的问题
那些网上说的JDK什么的的问题,我求你们不要误人子弟好吗? 出现在这个的原因就是ADT也就是你的SDK manager 的Tools版本跟你的SDK版本不兼容,如果你的是SDK 23.0.2那你的To ...
- stereoscopic 3D
色分(Anaglyph)模式:典型的如红蓝立体,是利用红镜片只允许红光通过,蓝镜片只允许蓝光通过的原理,将两幅视差的图片(一张红色.一张蓝色)叠加构成一张立体图片 由于红蓝立体去掉了绿色分量,会导致最 ...
- python smtplib发email
#!/usr/bin/env python #coding: utf-8 import smtplib from email.mime.text import MIMEText from email. ...
- python模块(os,sys,hashlib,collections)
列出目录下所有文件 os.listdir('dirname'):列出指定目录下的所有文件和子目录,包括隐藏文件,并以列表方式返回. 创建文件夹: os.mkdir('文件夹') 创建文件夹 os ...
- linq 左连接后实现与主表一对一关系数据
var query1 = from r in _residentRepository.GetAll() join i in _inLogRepository.GetAll() on r.Id equa ...
- 【导航】Python相关
[博客导航] Python相关导航 [索引]Python常用资源(从新手到大牛) [任务]Python语言程序设计.MOOC学习 [笔记]Python集成开发环境——PyCharm 2018.3下载. ...
- Seattle Traffic construction projects punlication
Why are we making this changes? Construction projects will close some transit facilities to buses in ...