java程序通过mybatis修改oracle数据库中的数据,采用了jdbcType=Date,原则上应该会过滤时分秒,但是执行结果没有过滤掉
jdbcType=Date,所传日期实际上携带了时分秒,如 2022-12-01 12:00:21
日志打印sql(sql里没传,实际上是传了)
Oracle数据库字段日期类型(Date)
更新后的数据库,携带了当前系统时间的时分秒
使用mysql不会携带时分秒
oracle版本下,有的环境带时分秒,有的不带(同一个oracle库),因素太多难以识别
基本可以排除oracle自动拼接时分秒的可能性
采用了jdbcType=Date 后 只传年月日,不传时分秒
javatype导入包的问题吧,有两个:java.util.Date 、 java.sql.Date,你看你使用的哪一个,然后换一下导入包
建议取当前日期的时候使用 jdk8的LocalDate 这个类是不含时分秒的,因为 oracle的日期类 Date和mysql的不一样,是包含时分秒的。而mybatis的jdbcType对应的Oracle也是Date,所以没有截掉应该是正常的。
有的不带时分秒,可能是因为传入的时候日期本身就没有时分秒,而带时分秒的可能是这里通过更新变更的。这里最好是查下代码,看看二者都是怎么进入数据库的是不是通过不同方法进入的。
确定自己的date是不是有时分秒吧,确定带了那才是mybatis的问题
在数据库中设置date字段的日期格式是否可行?
jdbcType=”DATE”,用mybatis generator生成代码后,执行查询语句时,oracle里的Date类型字段截断到年月日,后面时分秒都为零。改成 jdbcType=“TIMESTAMP” 会包含时分秒。
使用java.sql.date。
xml 调整实体属性为 TIMESTAMP 就可以了