Mybatis 中 Integer 类型参数遇到的问题

先上一条错误代码:


            AND state = #{UEntity.state, jdbcType = INTEGER}

使用实体类传递参数时,若属性为 varchar 类型,则一般情况下使用上面的写法;若有些属性类型设置为 Integer 类型,如果依旧沿用上面写法,会有以下问题:
1、不传入 state 值(则state为null),则无法进入 if 条件内;
2、传入 state 为 0 以外的数字,则成功进入 if 条件内;
3、传入 state 为 0 ,则无法进入进入 if 条件内,原因:mybatis 在解析Integer类型数据时,如果数据值为0,会将0解析为空字符串(if 第二个条件无法成立)

因此,传递 Integer 类型参数时,正确写法如下:


            AND state = #{UEntity.state, jdbcType = INTEGER}


//参考网页:https://blog.csdn.net/Mr1ght/article/details/118183413?spm=1001.2101.3001.6650.4&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7EHighlightScore-5.queryctrv2&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7EHighlightScore-5.queryctrv2&utm_relevant_index=9 (怕被夹,放这里)

今天又被bug上了一课,记录一下

你可能感兴趣的:(Mybatis 中 Integer 类型参数遇到的问题)