MySQL 中的时间类型有 Date、DateTime、Timestamp等,对应 Java 类型的 Date 或 Java 1.8 后的 LocalDate/LocalDateTime。
而在写 SQL 进行字段关系映射时,需要指定对应的 jdbcType,当指定的类型不正确时,可能导致数据的不一致性。
<resultMap id="BaseResultMap" type="io.zsy.model.EquityTransactionInfo">
<id column="demo_id" jdbcType="CHAR" property="demoId" />
<result column="demo_create_time" jdbcType="TIMESTAMP" property="demoCreateTime" />
<result column="demo_create_user" jdbcType="VARCHAR" property="demoCreateUser" />
<result column="demo_update_time" jdbcType="TIMESTAMP" property="demoUpdateTime" />
<result column="demo_update_user" jdbcType="VARCHAR" property="demoUpdateUser" />
<result column="demo_remarks" jdbcType="VARCHAR" property="demoRemarks" />
<result column="demo_version_number" jdbcType="INTEGER" property="demoVersionNumber" />
</resultMap>
举例:上面的 创建时间、更新时间在数据库中指定的是 timestamp 类型,如果关系映射时指定的为 Date 类型,就会导致如题所述的时间为 0 的情况。
<result column="demo_create_time" jdbcType="DATE" property="demoCreateTime" />
<result column="demo_update_time" jdbcType="DATE" property="demoUpdateTime" />
这是数据库存储的时间值为:2021-09-08 14:24:31,而读取出来的数据则为 2021-09-08 00:00:00,导致时间判断时出错。