MyBatis针对String类型的数字<if>标签失效问题
需求描述:
大致场景是订单模块去接受流程模块发送的MQ消息,针对MQ消息发送的是一个实体类,该实体类中有一个String类型的字段,用于判断当前业务状态,1 表示 审核中 2 表示 已审核 等。订单模块根据这个状态去修改自身状态的信息
可以看到这里有一个If标签,用于判断这个eventType 的值是否成立,成立就走不同的分支,但是在实际场合在中运行发现 并没有走我的if 标签
解决方案:
1、通过 .toString()
方式转换后判断
<if test="eventType =='1'.toString()>
,status = 1,procDefId =#{procDefId},procInsId = #{procInsId}
</if>
2、通过 转换 单引号 和双引号的位置判断
<if test='eventType =="1"''>
,status = 1,procDefId =#{procDefId},procInsId = #{procInsId}
</if>
以上两种方式都可以完美解决这个问题,mybatis在String类型数字转换的过程中会时效,会将此类型自动转换为字符,那么针对字符与字符串的比较基于== 肯定就失败了。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)