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,导致时间判断时出错。

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐