Mybatis,对象中某属性为null时,不要更新数据库中对应的字段,该怎么弄?

数据库如图1,BUDGET_TYPE_字段已经有值为001了。XML:<updateid="update">UPDATEPRO_BUDGET_FSETBUDGET_TYP... 数据库如图1,BUDGET_TYPE_字段已经有值为001了。XML:<update id="update"> UPDATE PRO_BUDGET_F SET BUDGET_TYPE_ = #{budgetType} WHERE ID_ = #{id}</update>注:下面这种方法不适用我的情况。<if test="budgetType != null"> BUDGET_TYPE_ = #{budgetType},</if>问题:在XML里执行update时,当传入的对象的budgetType属性为null时,怎么才能不覆盖数据库此时BUDGET_TYPE_的值。求大神解答。 展开
 我来答
百度网友090def6
2018-03-19 · TA获得超过2211个赞
知道小有建树答主
回答量:558
采纳率:100%
帮助的人:710万
展开全部

你是否想达到下列目的:

  1. budgetType 不为null,更新 BUDGET_TYPE_ 字段;

  2. budgetType 为努力时,不更新  BUDGET_TYPE_ 字段;

如果是可以如下做:

<update id="update">
    UPDATE PRO_BUDGET_F
       SET 
           <if test="budgetType != null"> BUDGET_TYPE_ = #{budgetType}</if>
           <if test="budgetType == null"> BUDGET_TYPE_ = BUDGET_TYPE_</if>
     WHERE ID_ = #{id}
</update>

即改变下思路,当budgetType 为null,不更新值(这里BUDGET_TYPE_ = BUDGET_TYPE_
只是把值重新设置一次)

注:上面的方法只是针对你Mybatis部分做出的修改,如果budgetType 为null,将执行一次无用的SQL语句,浪费系统资源,最好的办法是,到调用Mybatis时(一般在DAO)判断budgetType是否为空,为空则不执行数据库操作;

Mybatis只执行SQL操作,Dao(或者Service)附带业务检查,判断是否需要执行

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式