Mybaits更新数据1不可修改为0的问题

本文记录了一次在使用MyBatis框架进行数据库更新操作时遇到的问题及其解决过程。问题表现为从1到0的更新操作虽提示成功但实际未生效。通过对SQL语句的调整,最终解决了这一难题。

遇到一件诡异的事情,修改数据从0到1的时候没有问题,但是从1到0的时候提示成功了,但是总是没有效果。

分析如下: a.从0到1到2没有问题,说明代码逻辑没有什么问题

                   b.从2到1没有问题,证明上述观点没有问题

                   c.从1到0没有效果

                   并且debug到在保存数据之前,数据也是没有问题的


得出结论,最有可能出现问题的地方就是sql语句哪里有问题

修改类的类型为INTEGER

原有sql如下

<update id="update" parameterType="MerchantEntity">
		update MERCHANT
        <set>
            <if test="day!=null and day !=''">
                DAY = #{day, jdbcType=INTEGER},
            </if>
        </set>
        where NO=#{no, jdbcType=VARCHAR}
	</update>

修改后

<update id="update" parameterType="MerchantEntity">
		update MERCHANT
        <set>
            <if test="day!=null">
                DAY = #{day, jdbcType=INTEGER},
            </if>
        </set>
        where NO=#{no, jdbcType=VARCHAR}
	</update>

问题虽然解决了,但是还没确定是什么问题造成的


忽然看到还有这样一个问题没解决,今天有时间测试了一下发现问题依然。

1.检查代码无问题

2.检查xml 忽然发现INTEGER 类型参数 != ‘’应该是解析不通过,可能是这里mybatis做了处理,具体需要通过源码来解释了

3.测试VARCHA类型,发现没有该问题发生。应该是由于mybatis做了处理。

mybatis源码待查看解析sql部分,后续补充





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值