1、MyBatis中jdbcType简介
MyBatis处理日期有两种的jdbcType,如下所示:
(1)jdbcType=DATE
(2)jdbcType=TIMESTAMP
注意:此时的DATE指的是java.sql.Date,不是java.util.Date,要注意两者的区别。java.util.Date通常情况下用它获取当前时间,java.sql.Date是针对SQL语句使用的,它只包含日期而没有时间部分。
2、MySQL数据库常用日期类型
- (1)DATETIME
- 显示格式:YYYY-MM-DD HH:MM:SS
- 时间范围:[ '1000-01-01 00:00:00'到'9999-12-31 23:59:59']
- (2)DATE
- 显示格式:YYYY-MM-DD
- 时间范围:['1000-01-01'到'9999-12-31']
- (3)TIMESTAMP
- 显示格式:YYYY-MM-DD HH:MM:SS
- 时间范围:[ '1970-01-01 00:00:00'到'2037-12-31 23:59:59']
3、Java编程中的时间用法:
Java中有两个Date类,一个是java.util.Date,通常情况下用它获取当前时间,另一个是java.sql.Date,是针对SQL语句使用的,它只包含日期而没有时间部分。
备注:我们常用的是java.util.Date,不必考虑java.sql.Date的情况,只要明白它仅仅用于mybatis框架的jdbcType=DATE即可。
4、不要画蛇添足
使用java.util.Date作为参数传递给Mapper时,不管MySQL的日期字段类型是date、datetime或者timestamp中的哪一种,默认缺省情况下,MyBatis都能够自动做出类型转换,可以直接使用 =、>、<、>=、<=符号来进行筛选。
但是,当我们手动指定jdbcType=DATE的时候,MyBatis会自动截取掉时间,只保留日期。如果MySQL的日期字段类型是datetime或者timestamp一定不要这么写,否则属于画蛇添足,自讨没趣。
总之,在连接mysql数据库的时候,当jdbcType="DATE"类型时,返回的时间只有年月日(yyyy-MM-dd)的,当jdbcType="TIMESTAMP"的时候,返回的时间是年月日和时分秒(yyyy-MM-dd HH:mm:ss)。
从网上找了一个例子,请参考一下,以绑定时间和解绑时间为例:
(1)当绑定时间的jdbcType="DATE",解绑时间的为jdbcType="TIMESTAMP",xml文件设置如下:
(2)最终查询到的数据类型是DATE的数据只有年月日(yyyy-MM-dd),而TIMESTAMP的年月日和时分秒都有(yyyy-MM-dd HH:mm:ss),如下所示:
(3)当两个时间都设为TIMESTAMP的时候,xml文件设置如下:
(4)两个时间数据都展示位年月日和时分秒(yyyy-MM-dd HH:mm:ss),结果如下:
标签:DATE,java,MM,jdbcType,00,datetime,Date,SQL,date From: https://www.cnblogs.com/lyf906522290/p/17631058.html