Mybatis里Integer数据类型的0值判断问题

 

我们都知道,java中int的默认值为0,Integer的弄认值为null。只是我们的基本认知。

我们先来看一个mybatis的映射文件,这是一个很简单的修改操作,实体类如下。

Mybatis里Integer数据类型的0值判断问题_第1张图片

映射文件为

 

 
        update web_exam
        
            name = #{name},
            exam_remark = #{examRemark},
            total_time = #{totalTime},
            exam_type = #{examType},
            single_score = #{singleScore},
            single_ids = #{singleIds},
            is_publish = #{isPublish},
            update_time = sysdate()
        
        where id = #{id}
    

问题:我修改部分属性时候出现了 

isPublish传值为0的时候,显示修改成功,但是数据库中的数值却没被修改掉。

问题排查:

isPublish为0的时候没有通过不为空的判断也就是isPublish为0和isPublish为' '空串等效。

解决办法:

isPublish去掉为' '的判断

 
        update web_exam
        
            name = #{name},
            exam_remark = #{examRemark},
            total_time = #{totalTime},
            exam_type = #{examType},
            single_score = #{singleScore},
            single_ids = #{singleIds},
            is_publish = #{isPublish},
            update_time = sysdate()
        
        where id = #{id}
    

再次修改,发现修改成功

你可能感兴趣的:(spring,boot,mybatis)