遇到一件诡异的事情,修改数据从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部分,后续补充