我有一个java bean
BeanA
:
public class BeanA {
private Integer id;
private LocalDate dateField;
// other fields
}
和 mysql 表
bean_a
,其中包含 date
列 date_field
。
对于日期字段,包括两种情况:
null
插入/更新到表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>
以上是普遍做法吗?有更好的做法吗?谢谢!
参见sqlmap参数
你可以这样做
set date_field = #{dateField,jdbcType=DATE}
或
set date_field = #{dateField,javaType=java.time.LocalDate}