You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MyBatis是否曾支持自动转换java.util.Calendar为数据库timestamp类型

核心结论

你大概率是记混了不同框架的特性,MyBatis官方默认提供的类型处理器从未支持过java.util.Calendar到JDBC TIMESTAMP类型的自动转换。


相关说明

  • MyBatis内置的默认时间类类型处理器,仅覆盖java.util.Date、java.sql.Date、java.sql.Time、java.sql.Timestamp以及JDK8之后的java.time包下的JSR-310时间类,官方文档中从来没有出现过支持Calendar自动转换的相关说明。
  • 你之前写入2万条数据都正常,是因为对应的写入逻辑没有触发Calendar类型参数的绑定流程,直到触发了带时间参数的查询逻辑才走到报错的代码分支,不是框架运行中途突然改变了转换规则。
  • 如果不想全部替换为Date类型参数,也可以通过两种方式解决问题:
    1. 在Mapper参数绑定的位置明确指定jdbcType:#{calendar, jdbcType=TIMESTAMP},即可触发对应的类型适配
    2. 自定义Calendar到TIMESTAMP的类型处理器,注册到MyBatis全局配置中即可全局生效
  • 你关于支持Calendar转换的记忆很可能来自Spring JDBC的特性,Spring JDBC的JdbcTemplate默认支持Calendar类型的参数转换,同时使用两个框架的开发者很容易记混二者的能力边界。

内容的提问来源于stack exchange,提问作者Morris Town

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 03:36:04