MyBatis采用xml的形式写sql语句时验证Integer类型的数据如果需要用到0值不要加空字符判断
今天在调试程序的时候,发现有一个整型字段,是个枚举。仅有0和1两个值,但是在调用sql修改这个字段时,发现该字段从0到1可以修改,但是从1到0就不行。于是进行了一系列的debug并没有发现问题,所有的参数在调用sql之前均传入生效了。
sql语句如下
于是按照网上的教程,在执行该条修改sql的时候,我去MappedStatement这个类中的getBoundSql方法中打了断点,查看具体执行的sql语句。
结果发现,拼接出来的sql少了一行
但是我的传参确实正常的
经高人指教,让我删掉assetAttribute这个属性的后半句判断(虽然他不了解为啥,只是凭感觉)。删掉后sql如下(中间做了小调整)。
后面再此调用这个sql,再MappedStatement类中查看sql拼接情况,此时就对了
事后针对这个问题在网上查阅资料发现,造成这个的原因是因为:MyBatis因自身原因默认了 Integer类型数据值等于0时 为 “”(空字符串)
所以当我传入的值为0的时候,在判断空字符串就满足了if的条件因此没有进行拼接。
问题说明的原文链接:https://blog.csdn.net/qq_38080370/article/details/103362675