避免真实项目数据直接模拟说明,一样。

假设表:t_user

有一个字段:modify_time,类型:datetime2

然后用户需求是允许对已产生的字段设置成为空,比如:modify_time='2022-02-02 00:00:00 0000..00'

update t_user set modify_time=null;

很简单的需求用SQL执行也没问题,但是用mybatis执行时直接报异常:

不允许从数据类型varbinary到datetime2........

mybatis的实现代码:

update t_user set modify_time=#{modifyTime};

这样是不行的,直接报错

然后尝试把#改成使用$:

update t_user set modify_time=¥{modifyTime};

也是不行的,直接报错

最后只能直接使用原生的SQL拼接到xml中,同时还要兼容有值的处理:

update t_user set

<if test='modifyTime == null'>

modify_time=null

</if>

<if test='modifyTime != null'>

modify_time=#{modifyTime};

</if>

Logo

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

更多推荐