因为是半路接手的项目,很多参数以及格式都定了下来。
数据库里的时间默认为datetime.
实体类的则是Date
令人头秃。
决定好好理一理这个思路。
先看看Mysql数据库里时间的区别吧。
https://www.cnblogs.com/wlzjdm/p/6953398.html
参考上文
1.关于Mysql
1.1 Date格式
此类型的字段,存储数据格式为:YYYY-MM-DD,它支持的范围为'1000-01-01'到'9999-12-31',并且允许使用字符串或数字为此列复制。
1.2 Datetime格式
日期和时间的组合,存储格式为:YYYY-MM-DD HH:MM:SS,它支持的范围为'1000-01-01 00:00:00'到'9999-12-31 23:59:59',并且允许使用字符串或数字进行分配值。
1.3 TimeStamp格式
这是时间戳,从1970-01-01 00:00:00到当前的时间差值(注意:当你在Java中输出[new Date(0)] 的时候,输出的是:Thu Jan 01 08:00:00 CST 1970,这是因为时区的概念,中国是东八区,所以对应的是早上八点),它精确到毫秒级别,范围为:1970-01-01 00:00:00 到 2037年(参考2038年问题),当值大于2037年就会抛出: [Error Code: 1292, SQL State: 22001] Data truncation: Incorrect datetime value: '20381212121212' for column 'crt_date' at row 1。设置值时只允许设置数字类型的值。
在为TimeStamp类型字段赋值的时候,值必须大于19700101000000,否则就会抛出: [Error Code: 1292, SQL State: 22001] Data truncation: Incorrect datetime value: '10831212121212' for column 'crt_date' at row 1。
-
TIMESTAMP列必须有默认值,默认值可以为“0000-00-00 00:00:00”,但不能为null。
-
TIMESTAMP列不可以设置值,只能由数据库自动去修改。
例如:
update sys_tables set crt_date = 20081212121212 where table_name = 'sys_dict';
很容易看出,Date仅仅有日期,DateTime加上了时间,而TimeStamp则在Java输出的是:Thu Jan 01 08:00:00 CST 1970
2.关于Mybatis
简述一下mybatis, MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Ordinary Java Object,普通的 Java对象)映射成数据库中的记录。--来自百度
看了一下sql文
这里和mybatis没啥关系,跳过。
3.关于Java里的实体类。
实体类里用的是Date承接数据。
Date用的是
java.util.Date
查看百度百科可知,需要单独处理Date
编写工具类,对获取到的时间进行格式化,然后将转化好的时间存到另一个参数lastTime中
运行项目:
好了,整理完毕,不会被前端追着打了。