记一次马虎造成的问题: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,一时的马虎大意浪费了一个下午的时间,以后要引以为戒!

posted @   MrSuperChaos  阅读(360)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
点击右上角即可分享
微信分享提示