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

先上一条错误代码:

<if test="UEntity.state != null and UEntity.state !=''">
            AND state = #{UEntity.state, jdbcType = INTEGER}
</if>

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

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

<if test="UEntity.state != null ">
            AND state = #{UEntity.state, jdbcType = INTEGER}
</if>

//参考网页: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上了一课,记录一下

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容