开发中的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# 常用小点
1]创建文件夹 //相对路径 string FilePath = Server.MapPath("./") + "ImageFile/Images/" + Da ...
- Mac下如何用SSH连接远程Linux服务器
终端命令 a).打开Mac的命令终端 b).输入ssh -p 22 root@102.210.86.213 它会提示你输入密码,输入正确的密码之后,你就发现已经登陆成功了.(22: 端口号 root ...
- XML记一次带命名空间的xml读取
public static void ReadXML(string xmlUrl) { //判断文件是否存在 if (!File.Exists(xmlUrl)) { Console.WriteLine ...
- Spring boot集成spring session实现session共享
最近使用spring boot开发一个系统,nginx做负载均衡分发请求到多个tomcat,此时访问页面会把请求分发到不同的服务器,session是存在服务器端,如果首次访问被分发到A服务器,那么se ...
- 学JAVA第十一天,属性与方法
今天清明节假期结束第二天,昨天请了一天假去考科目二,还好考过了,O(∩_∩)O哈哈~~~~ 今天老师讲了类的属性与方法的使用 就用代码来说明吧: package pkg3;public class T ...
- 委托(4).net 3.5中的委托
.net 3.5引入了Linq,lambda表达式,所以委托的创建变得更加简单和优雅了. .net 3.5中的委托 引入lambda表达式后,就不需要再使用匿名方法了,使得创建委托的方式更加简单和优雅 ...
- jQuery实现简单的图片淡入淡出效果
整体思路: 1.实现页面布局,设置css样式 2.用jQuery获取需要用到的变量 3.用jQuery为两个按钮绑定事件 一.页面布局: <div class="d1"> ...
- js 数组随机洗牌
//先定义一个某数值范围内的随机数 function getRandom(min, max) { return Math.floor(Math.random() * (max - min + 1) + ...
- mssql sqlserver 指定特定值排在表前面
转自:http://www.maomao365.com/?p=7141 摘要: 下文讲述sql脚本编写中,将 特定值排在最前面的方法分享, 实验环境:sqlserver 2008 R2 例:将数据表中 ...
- windows下查看端口被占用及处理
一.通过命令行查找端口被谁占用 1.window+R组合键,调出命令窗口 2.输入命令:netstat -ano,列出所有端口的情况.在列表中我们观察被占用的端口 3.查看被占用端口对应的PID,输入 ...