记一次马虎造成的问题:Mybatis传入的参数是字符串String,生成的SQL查询语句变成Boolean类型的ture
记一次马虎大意导致的bug
今天在开发的时候,用Mybatis做查询的时候,发现无法获得正确的结果
参数传入的是String类型,但是经过Mybatis的If标签进行条件判断之后,参数变成了Boolean型,
即使在xml里面指定了类型,也会报参数转换异常,提示Boolean型无法转换为String类型
Mapper的方法如下,加了@Param注解也不起作用:
String querytotalSum(@Param("deptId")Long deptId, @Param("time")String time);
Mapper.xml代码如下:
SELECT
SUM(amount) AS SUM
FROM
use_info ui
WHERE
ui.check_status=1
<if test="time =! null and time != ''">
AND
ui.time LIKE CONCAT(#{time},'%')
</if>
后来打断点,发现在Mybatis处理if里面的表达式时,对参数进行了运算后就变成Boolean型了
查找了一下午的相关配置和代码之后,没找到问题
后在论坛发帖求助,被他人指出问题所在:
if里面的test表达式里面判空语句写错了,time=! null
,Mybatis没有报错,但是将这里作为赋值语句处理了,正确的写法应该是time != null,一时的马虎大意浪费了一个下午的时间,以后要引以为戒!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报