来源:https://www.jb51.net/program/287517rew.htm
MyBatis处理MySQL字段类型date与datetime
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']
一、 MyBatis处理日期有两种的jdbcType:
1、jdbcType=DATE
2、jdbcType=TIMESTAMP
二、JAVA中只有一种日期类型 DateTime
java.util.Date实际上是能够表示mysql的三种字段类型:
1、date
2、datetime
3、timestamp
而实际将java.util.Date当做参数传递给Mapper的时候
1、假如我们不指定jdbcType,那么这个日期会自动转化会MySQL的timestamp,例子如下:
2、指定jdbcType=TIMESTAMP结果同上。
3、指定jdbcType=DATE,那么MyBatis会将传入参数截取为2018-07-24(Date)
四、总结
使用java.util.Date作为参数传递给Mapper时,不管MySQL的日期字段类型是date、datetime或者timestamp中的哪一种,MyBatis都能够自动做出类型转换,可以直接使用 =、>、<、>=、<=符号来进行筛选。
唯一的不同点是指定jdbcType=DATE的时候,MyBatis会自动截取掉时间,如果MySQL的日期字段类型是datetime或者timestamp一定不要这么写。
总之不手动指定参数的jdbcType必然没有问题。
Mybatis中javaType和jdbcType对应关系
JDBC Type / Java Type
CHAR String
VARCHAR String
LONGVARCHAR String
NUMERIC java.math.BigDecimal
DECIMAL java.math.BigDecimal
BIT boolean
BOOLEAN boolean
TINYINT byte
SMALLINT short
INTEGER int
BIGINT long
REAL float
FLOAT double
DOUBLE double
BINARY byte[]
VARBINARY byte[]
LONGVARBINARY byte[]
DATE java.sql.Date
TIME java.sql.Time
TIMESTAMP java.sql.Timestamp
CLOB Clob
BLOB Blob
ARRAY Array
DISTINCT mapping of underlying type
STRUCT Struct
REF Ref
DATALINK java.net.URL
oracle数据类型和对应的java类型
用mybatis generator生成代码后,执行查询语句时,oracle里的Date类型字段只精确到年月日,后面时分秒都为零。 jdbcType=”DATE”时候,存入到数据库中的字段只有年月日! 后来发现是jdbcType问题,改成 jdbcType=“TIMESTAMP” 就可以。(原先默认生成时是jdbcType=“DATE”)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
2020-04-23 jquery操作checkbox
2019-04-23 WPF打印京东电子面单(可以异步)
2018-04-23 Http方式下载文件