商品网站建设实验报告,国内永久免费网络游戏推荐,从什么网站可以做兼职,外贸局是做什么的工作文章目录 项目开发中使用Date和LocalDateTime处理日期Date类型验证数据库表设计#xff08;年月日情况#xff09;实体类说明映射文件xml响应展示情况注意事项 LocalDateTime验证数据库设计实体类日期类型动态SQL日期类型响应展示情况 总结 项目开发中使用Date和LocalDateTim… 文章目录 项目开发中使用Date和LocalDateTime处理日期Date类型验证数据库表设计年月日情况实体类说明映射文件xml响应展示情况注意事项 LocalDateTime验证数据库设计实体类日期类型动态SQL日期类型响应展示情况 总结 项目开发中使用Date和LocalDateTime处理日期 说明 1、注意数据库表字段日期类型 2、实体类日期类型 3、动态SQL日期类型 Date类型验证
数据库表设计年月日情况
》如果存储年月日时分秒可以使用datetime,timestamp
datetime,timestamp区别 1.存储范围不一致 datetime的存储范围是 1000-01-01 00:00:00.000000 到 9999-12-31 23:59:59.999999而timestamp的范围是 1970-01-01 00:00:01.000000到 2038-01-19 03:14:07.999999(准备的来讲应该是UTC范围) 如果我们存储timestamp的时候存了不在它范围内的时间值时会直接抛出异常。
2.与时区有关系否
datetime存储与时区无关准备来说是datetime只支持一个时区就是存储时当前服务器的时区而timestamp存储的是与时区有关。 MySQL在存储TIMESTAMP时会先将时间从当前服务器的时区转换为UTC世界协调时以进行存储然后查询时从UTC转换为当前时区以进行返回。也就是说使用timestamp进行存储的时间返回的时候会随着数据库的时区而发生改变。而datetime的存储则与时区无关数据是什么就存储什么也就返回什么。
3.存储大小
在5.6.4之前datetime存储占用8个字节而timestamp是占用4字节但是在5.6.4之后由于这两个类型允许有小数部分所以占用的存储空间和以前不同 MySQL规范规定datetime的非小数部分需要5个字节而不是8个字节而timestamp的非小数部分是需要4个字节并且这两个部分的小数部分都需要0到3个字节具体取决于存储值的小数秒精度。 数据库表脚本
CREATE TABLE user (id bigint NOT NULL AUTO_INCREMENT,user_name varchar(100) DEFAULT NULL,birthday date DEFAULT NULL COMMENT 生日,sex varchar(100) DEFAULT NULL,address varchar(100) DEFAULT NULL,insert_time timestamp NULL DEFAULT NULL,update_time timestamp NULL DEFAULT NULL,PRIMARY KEY (id)
) ENGINEInnoDB AUTO_INCREMENT5 DEFAULT CHARSETutf8mb4 COLLATEutf8mb4_0900_ai_ci;实体类说明
用户实体类
package com.jack.springbootmybatis.pojo;import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import lombok.ToString;import java.io.Serializable;
import java.util.Date;/*** author PMB*/
Data
ToString
public class User implements Serializable {private static final long serialVersionUID 723356122339609354L;private int id;private String userName;JsonFormat(patternyyyy-MM-dd,timezone GMT8)private Date birthday;private String sex;private String address;JsonFormat(patternyyyy-MM-dd HH:mm:ss,timezone GMT8)private Date insertTime;JsonFormat(patternyyyy-MM-dd HH:mm:ss,timezone GMT8)private Date updateTime;}重点关注字段 JsonFormat(patternyyyy-MM-dd,timezone GMT8)private Date birthday;映射文件xml
重点关注内容 ?xml version1.0 encodingUTF-8?!DOCTYPE mapper PUBLIC -//mybatis.org//DTD Mapper 3.0//EN http://mybatis.org/dtd/mybatis-3-mapper.dtdmapper namespacecom.jack.springbootmybatis.dao.UserMapper!--开始查询所有用户-用resultmap来接收--resultMap idgetUsersMap typeUserid columnid propertyid javaTypeint/result columnuser_name propertyuserName jdbcTypeVARCHAR/result columnbirthday propertybirthday jdbcTypeDATE/result columnsex propertysex jdbcTypeVARCHAR/result columnaddress propertyaddress jdbcTypeVARCHAR/result columninsert_time propertyinsertTime jdbcTypeTIMESTAMP/result columnupdate_time propertyupdateTime jdbcTypeTIMESTAMP//resultMapselect idgetUsers resultMapgetUsersMap select * from user /select!--结束查询所有用户-用resultmap来接收--/mapper响应展示情况 注意事项
默认时间日期格式
添加注解JsonFomat映射日期格式返回给前端 JsonFormat(pattern“yyyy-MM-dd”,timezone “GMT8”) private Date birthday; LocalDateTime验证
LocalTime 对应 time LocalDate 对应 date LocalDateTime 对应 datetime(timestamp)
数据库设计 CREATE TABLE user (id bigint NOT NULL AUTO_INCREMENT,user_name varchar(100) DEFAULT NULL,birthday date DEFAULT NULL COMMENT 生日,sex varchar(100) DEFAULT NULL,address varchar(100) DEFAULT NULL,insert_time timestamp NULL DEFAULT NULL,update_time timestamp NULL DEFAULT NULL,PRIMARY KEY (id)
) ENGINEInnoDB AUTO_INCREMENT5 DEFAULT CHARSETutf8mb4 COLLATEutf8mb4_0900_ai_ci;
重点关注 insert_time timestamp NULL DEFAULT NULL, update_time timestamp NULL DEFAULT NULL, 实体类日期类型 JsonFormat(patternyyyy-MM-dd,timezone GMT8)private LocalDate birthday;private String address;JsonFormat(patternyyyy-MM-dd HH:mm:ss,timezone GMT8)private LocalDateTime insertTime;JsonFormat(patternyyyy-MM-dd HH:mm:ss,timezone GMT8)private LocalDateTime updateTime;
动态SQL日期类型
重点关注内容 result columninsert_time propertyinsertTime jdbcTypeTIMESTAMP/?xml version1.0 encodingUTF-8?!DOCTYPE mapper PUBLIC -//mybatis.org//DTD Mapper 3.0//EN http://mybatis.org/dtd/mybatis-3-mapper.dtdmapper namespacecom.jack.springbootmybatis.dao.UserMapper!--开始查询所有用户-用resultmap来接收--resultMap idgetUsersMap typeUserid columnid propertyid javaTypeint/result columnuser_name propertyuserName jdbcTypeVARCHAR/result columnbirthday propertybirthday jdbcTypeDATE/result columnsex propertysex jdbcTypeVARCHAR/result columnaddress propertyaddress jdbcTypeVARCHAR/result columninsert_time propertyinsertTime jdbcTypeTIMESTAMP/result columnupdate_time propertyupdateTime jdbcTypeTIMESTAMP//resultMapselect idgetUsers resultMapgetUsersMap select * from user /select!--结束查询所有用户-用resultmap来接收--/mapper响应展示情况 总结
1时间戳 是指格林威治地球零时区时间1970年01月01日00时00分00秒起至现在的总秒数这个时间戳在地球的各个地方都是一致的;
2时区 由于地球的自转根据接收太阳光照的顺序将地球划分成24个区从而方便当地人的生产生活每个时区相差一小时可以根据时间戳和时区计算当地的时间。格林威治处于零时区北京处于东八区因此北京时间比格林威治时间早8个小时。
3便捷性 LocalDateTime 比 Date使用起来更为方便两者可以相互进行转化。
4、jdk1.8前后对比api LocalTime 对应 time LocalDate 对应 date LocalDateTime 对应 datetime(timestamp)