java -mybatis plus - 写法 <if test="param.isOverdue =='N'"> 报错 NumberFormatException: For input string: "N"

1.背景

需要判断一个参数是单一字母时,报错无法转数字?奇怪的很,一脸懵,查了资料才知道,当只有一个字母时,会任务是 ascll码 数字比较,因此会将 param.isOverdue 的值 转数字

2.解决

转字符串就好了

<if test="param.isOverdue !=null and param.isOverdue !=''">
    and
    <if test="param.isOverdue =='Y'.toString()">
        <if test="_databaseId =='sqlserver'">
            GETDATE()
        </if>
        <if test="_databaseId =='mysql'">
            NOW()
        </if>
        <if test="_databaseId =='oracle'">
            SYSDATE
        </if>
        > ta.CRT_TIME
    </if>
    <if test="param.isOverdue =='N'.toString()">
        ta.CRT_TIME >=
        <if test="_databaseId =='sqlserver'">
            GETDATE()
        </if>
        <if test="_databaseId =='mysql'">
            NOW()
        </if>
        <if test="_databaseId =='oracle'">
            SYSDATE
        </if>
    </if>
</if>
View Code

 

 

还有个写法

  <if test='param.isOverdue == "N" '>
</if>

改为双引号效果等同字符串

posted @ 2025-03-21 09:49  岑惜  阅读(58)  评论(0)    收藏  举报