记录使用mybatis时踩到的坑-integer类型数据为0时,会判断为:等于空字符串为true
因为做查询操作时,需要设置为传入参数值才进行查询,于是判断条件是:
status != null and status != ''
即mapper层的写法:
<if test="status != null and status != ''">and status=#{status}</if>
但设计表时,默认status=0表示正常状态,status=1表示其他状态。当传入status=0进行查询时,发现筛选条件失效,即会将status=0和status=1的都查询出来。
经过排查发现,当status=0时,mybatis会认为status!=''为false(即当status=0时,status==''为true),所以无法进入status的条件判断。
解决办法:
设计表时,尽量避免status=0的默认值设置;
或者去掉status!=''的判断,但这样也会造成当status不传值时,将所有状态下的记录查出来。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构