news 2026/6/6 1:50:20

Mybatis中使用表达式错误显示——记录错误

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Mybatis中使用表达式错误显示——记录错误

进行批量更新时,需要是布尔类型的字段,包含true/false0/1,这个会被Mybatis自动转为数据库(mysql)和java实体对象中的布尔类型

<!-- Boolean类型特殊处理 --> <when test="fieldName == 'isScrap'"> SET is_scrap = <choose> <when test="value == 'true' || value == '1'"> 1 </when> <otherwise> 0 </otherwise> </choose> </when>

堆栈跟踪:

MyBatis XML 中的 OGNL 表达式 value == '1',在 OGNL 里 单引号包裹单个字符 '1' 被解析为 char 类型,而非 String。当 value 是 "false" 时,OGNL 比较 String 与 char,会触发 compareWithConversion 尝试将两者都转为数值(double)比较,于是 Double.parseDouble("false") 抛出 NumberFormatException。

value = "false" (String) '1' = char 类型 OGNL: String == char ? → compareWithConversion() → 尝试将 "false" 转为 double → NumberFormatException (错误)
NumberFormatException: For input string: "false" at OgnlOps.doubleValue() ← OGNL 尝试把 "false" 转成数字 at OgnlOps.compareWithConversion() ← OGNL 类型转换比较 at OgnlOps.isEqual() ← == 比较 at ASTEq.getValueBody() ← value == '1' 这个节点 at ASTOr.getValueBody() ← or 运算符

【注意】

使用 单引号 情况下,当传递的是 true / false 是没有问题的,传递时会被认定为字符串,但是传递 0/1 会被认定为是 char类型,需要使用 双引号 进行包裹,但是在MyBatis的xml配置文件中,基本上会用 双引号 来包裹最外层的内容,那么在双引号里面就只能使用单引号了,这样又会出现错误,那么就需要使用转义符进行识别:&quot;

修改后的代码:

<!-- Boolean类型特殊处理 --> <when test="fieldName == 'isScrap'"> SET is_scrap = <choose> <when test="value == 'true' or value == &quot;1&quot;"> 1 </when> <otherwise> 0 </otherwise> </choose> </when>

这样无论 value 是 "true"、"false"、"1"、"0" 还是其他字符串,都是同类型(String vs String)的 equals 比较,不会再触发 NumberFormatException。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/6 1:49:21

医疗视觉问答技术:多模态AI在医学影像诊断中的应用

1. 医疗视觉问答技术概述医疗视觉问答&#xff08;Medical Visual Question Answering, Medical VQA&#xff09;是近年来医学人工智能领域的重要研究方向&#xff0c;它结合了计算机视觉与自然语言处理技术&#xff0c;旨在通过分析医学图像回答临床相关问题。这项技术的核心在…

作者头像 李华
网站建设 2026/6/6 1:48:17

戴西CAxWorks.AICrash:AI+法规驱动的行人保护自动化分析

一句话定位AICrash是一款面向汽车行人保护分析的自动化软件&#xff0c;将AI算法与行人保护法规&#xff08;GTR-9、E-NCAP、C-NCAP等&#xff09;相结合&#xff0c;提供快速、高效的行人保护评价解决方案。技术栈与环境开发工具&#xff1a;Microsoft Visual Studio编程语言&…

作者头像 李华
网站建设 2026/6/6 1:48:00

高效iOS图像背景移除解决方案:BackgroundRemoval开源库实战指南

高效iOS图像背景移除解决方案&#xff1a;BackgroundRemoval开源库实战指南 【免费下载链接】BackgroundRemoval Background Removal written with swift using u2net model 项目地址: https://gitcode.com/gh_mirrors/ba/BackgroundRemoval 在移动应用开发领域&#x…

作者头像 李华
网站建设 2026/6/6 1:46:25

3天掌握芋道源码企业级框架:从零搭建到实战开发的完整指南

3天掌握芋道源码企业级框架&#xff1a;从零搭建到实战开发的完整指南 【免费下载链接】ruoyi-spring-boot-all 芋道源码(无遮羞布版) 项目地址: https://gitcode.com/gh_mirrors/ru/ruoyi-spring-boot-all 你是否正在寻找一款真正开源、功能完整的企业级Java开发框架&a…

作者头像 李华
网站建设 2026/6/6 1:46:23

数据驱动新纪元:2026注塑MES选型必看,解码透明化生产的底层逻辑

在新能源汽车、高端消费电子、精密医疗器械等新兴领域高速发展的驱动下&#xff0c;全球注塑成型市场规模持续扩容。随着注塑产品向高精密、多品种、小批量方向加速升级&#xff0c;微米级的工艺偏差都可能导致昂贵模具的损坏或整批产品的报废。传统依赖人工调度和“老师傅”经…

作者头像 李华
网站建设 2026/6/6 1:45:25

074、位置控制:水平位置PID设计

飞控算法从入门到精通 074 位置控制:水平位置PID设计 从一次炸机说起 去年夏天,我在调试一架四轴植保机。GPS信号良好,磁罗盘校准通过,EKF收敛正常。切到定高+定点模式,飞机悬停——前30秒稳得像钉在天上。然后,它开始慢慢往东飘,我打杆修正,它回来一点,又飘回去。…

作者头像 李华