baomidou / mybatis-plus

An powerful enhanced toolkit of MyBatis for simplify development
https://baomidou.com
Apache License 2.0
16.28k stars 4.29k forks source link

[错误报告]: Java实体类中的java.util.Date属性映射到MySQL中的DATE类型字段,使用LambdaQuery查询时不能自动将java.util.Date的查询参数自动转型为java.sql.Date,导致无法查询出任何记录 #6422

Open luzhaoren opened 3 weeks ago

luzhaoren commented 3 weeks ago

确认

当前程序版本

3.5.7

问题描述

  1. java实体类中定义的类型为java.util.Date的属性,该属性映射到MySQL中类型为date的字段,且在xml文件中指定了jdbcType="DATE"
  2. 当使用LabmdaQuery查询时,传入类型为java.util.Date的参数时,没有执行DateOnlyTypeHandler自动将java.util.Date转型为java.sql.Date,导致传入的查询参数是:==> Parameters: 2024-08-22 220:24:44.642(Timestamp)
  3. 当使用mapper.xml查询时,传入类型为java.util.Date的参数时,执行了DateOnlyTypeHandler自动将java.util.Date转型为java.sql.Date,此时执行的查询参数是:==> Parameters: 2024-08-22(Date)
  4. @TableName添加autoResultMap = true,而且添加@TableField(value = "report_date", jdbcType = JdbcType.DATE)再次执行时依然不能成功查询
  5. 个人理解这应该是因为@TableField的jdbcType=JdbcType.DATE并没有生效,不然的话mybatis是可以正常执行DateOnlyTypeHandler进行处理的

    详细堆栈日志

No response