关于项目中update语句只更新部分字段且不报错

博客讲述了在执行SQL更新操作时遇到的问题,即当`name`和`phone`字段在`set`和`where`子句中都出现时,导致只有`email`和`note`字段更新成功。经过调试,发现问题出在`where`语句的条件上,由于字段名重复,更新失败。解决方案是更改`where`条件,避免字段名冲突,从而成功更新所有字段。
摘要由CSDN通过智能技术生成

问题描述

在做表内容的更新时,只有email和note两个字段更新成功,而name和phone字段则不更新
也不报错

SQL语句

    <update id="updaBook">
        update phonebook
        <set>
            <if test="name!=null" >
                name=#{name,jdbcType=VARCHAR},
            </if>
            <if test="phone!=null">
                phone=#{phone,jdbcType=VARCHAR},
            </if>
            <if test="email!=null">
                email = #{email,jdbcType=VARCHAR},
            </if>
            <if test="note!=null">
                note = #{note,jdbcType=VARCHAR},
            </if>
        </set>
        where name=#{name,jdbcType=VARCHAR} and phone=#{phone,jdbcType=VARCHAR}
    </update>

解决

经过调试后发现是因为where语句中的name和phone字段与set中的字段名重复导致的,更换where中判断条件后更新成功,原理暂不清楚,有大佬欢迎指点一下。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值