mybatis中插入或更新时如何处理日期列为空

问题描述 投票:0回答:1

我有一个java bean

BeanA
:

public class BeanA {
    
    private Integer id;
    private LocalDate dateField;
    // other fields
}

和 mysql 表

bean_a
,其中包含
date
date_field

对于日期字段,包括两种情况:

  1. 用户在 UI 上清除其值,在这种情况下,我们应该将
    null
    插入/更新到表
  2. BeanA beanA = new BeanA();set other fields exclude dateField;then call dao to update BeanA
    ,在这种情况下,我们应该更新表而不修改
    date_field
    ,因为
    dateField
    为空。

在mybatis中,我需要写这样的sql吗:

<insert id="newBeanA">
    insert into bean_a(date_field,...) values (
        <if test="dateField != null and dateField == '-999999999-01-01'">null,</if>
        <if test="dateField != null and dateField != '-999999999-01-01'">#{dateField},</if>
    )
</insert>

<update id="updateBeanA">
    update bean_a
    <set>
        <if test="dateField != null and dateField == '-999999999-01-01'">date_field = null,</if>
        <if test="dateField != null and dateField != '-999999999-01-01'">date_field = #{dateField},</if>
    </set>
    where id = #{id}
</update>

以上是普遍做法吗?有更好的做法吗?谢谢!

java mybatis
1个回答
0
投票

参见sqlmap参数

你可以这样做

set date_field = #{dateField,jdbcType=DATE}

set date_field = #{dateField,javaType=java.time.LocalDate}
© www.soinside.com 2019 - 2024. All rights reserved.