mybatis 报错:Caused by: java.lang.NumberFormatException: For input string

摘要:
以前,mybatis的if标记总是用来确定它是否为空。今天,当我们需要使用字符串比较时,我们遇到了困难。经过长时间的斗争,我们在一个论坛上找到了解决方案。记下以下内容:转移自:https://code.google.com/p/mybatis/issues/detail?id=262错误描述:<selected=“slt治疗”resultType=“com.vitamimd.sunny.core.bo.Tr

mybatis的if标签之前总是使用是否为空,今天要用到字符串比较的时候遇到了困难,倒腾半天,才在一个论坛上找到解决方法。笔记一下,如下:

转自:https://code.google.com/p/mybatis/issues/detail?id=262

错误描述:

<select id="sltTreatment" resultType="com.vitaminmd.sunny.core.bo.Treatment">
        select *
        from treatment
        where TRUE
        <if test="index == 'A'">
            AND ensubject IS NOT NULL AND ensubject &lt;&gt; ''
        </if>
    </select>

当使用的index为A时,这段便抛出一个NumberFormatExeption的异常,但是如果index为一个数值比如1时就运行正常。
错误:

Caused by: java.lang.NumberFormatException: For input string: "A"
    at sun.misc.FloatingDecimal.readJavaFormatString(Unknown Source)
    at java.lang.Double.parseDouble(Unknown Source)
    at org.apache.ibatis.ognl.OgnlOps.doubleValue(OgnlOps.java:248)
    at org.apache.ibatis.ognl.OgnlOps.compareWithConversion(OgnlOps.java:137)
    at org.apache.ibatis.ognl.OgnlOps.isEqual(OgnlOps.java:178)
    at org.apache.ibatis.ognl.OgnlOps.equal(OgnlOps.java:548)
    at org.apache.ibatis.ognl.ASTEq.getValueBody(ASTEq.java:49)
    at org.apache.ibatis.ognl.SimpleNode.evaluateGetValueBody(SimpleNode.java:175)
    at org.apache.ibatis.ognl.SimpleNode.getValue(SimpleNode.java:213)
    at org.apache.ibatis.ognl.Ognl.getValue(Ognl.java:314)
    at org.apache.ibatis.ognl.Ognl.getValue(Ognl.java:394)
    at org.apache.ibatis.ognl.Ognl.getValue(Ognl.java:435)
    at org.apache.ibatis.ognl.Ognl.getValue(Ognl.java:414)
    at org.apache.ibatis.builder.xml.dynamic.ExpressionEvaluator.evaluateBoolean(ExpressionEvaluator.java:17)
    at org.apache.ibatis.builder.xml.dynamic.IfSqlNode.apply(IfSqlNode.java:15)
    at org.apache.ibatis.builder.xml.dynamic.MixedSqlNode.apply(MixedSqlNode.java:14)
    at org.apache.ibatis.builder.xml.dynamic.DynamicSqlSource.getBoundSql(DynamicSqlSource.java:22)
    at org.apache.ibatis.mapping.MappedStatement.getBoundSql(MappedStatement.java:198)
    at org.apache.ibatis.executor.BaseExecutor.createCacheKey(BaseExecutor.java:115)
    at org.apache.ibatis.executor.BaseExecutor.query(BaseExecutor.java:90)
    at org.apache.ibatis.executor.CachingExecutor.query(CachingExecutor.java:72)
    at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:75)

解决方案:

1.改为:test="param eq 'A'.toString()"
2.原因是OGNL语法的问题:
这里 'A' 将被认为是 char 类型,但是 'AA' 或者 "A" 将被作为 String类型。

所以我们可以用转义:<if test="name == &quot;A&quot;">
3.或者将 <if test="index == 'A'"> 改为 <if test='index == "A"'>。

免责声明:文章转载自《mybatis 报错:Caused by: java.lang.NumberFormatException: For input string》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇JDK8 的FullGC 之 metaspaceSide by Side Assembly介绍--manifest文件的使用下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Word,Excel,pdf,txt等文件上传并提取内容

近期项目需求:1.要用到各种文件上传,下载。 2.并对文件进行搜索。 3.仅仅要文件里包括有搜索的内容,所有显示出来。 今天正好有时间整理一下,方便以后阅读,及对须要用到的朋友提供微薄之力。首先在实现文件上传时,使用的struts2自带的文件上传功能,通过流的方式将文件保存,在下载的时候通过流的方式写出就可以。这个实现起来不是非常难,主要是对各种文件...

mybatis返回HashMap结果类型与映射

Xhtml代码  <!-- 返回HashMap结果 类型-->       <!-- 如果想返回JavaBean,只需将resultType设置为JavaBean的别名或全限定名 -->       <!-- TypeAliasRegistry类初始化时注册了一些常用的别名,如果忘记了别名可以在这里面查看 -->  ...

centos lamp/lnmp阶段复习 以后搬迁discuz论坛不需要重新安装,只需修改配置文件即可 安装wordpress 安装phpmyadmin 定时备份mysql两种方法 第二十五节课

centos  lamp/lnmp阶段复习 以后搬迁discuz论坛不需要重新安装,只需修改配置文件即可 安装wordpress  安装phpmyadmin  定时备份mysql两种方法  第二十五节课 wordpress下载地址:https://cn.wordpress.org/ 架构:nginx代理 +LAMP 修改Windows的hosts文件 ap...

Mybatis-第N篇配置log4j1、log4j2打印执行的sql语句

1、log4j1配置    目录结构:       conf.xml <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/myba...

【JAVA】POI生成EXCEL图表(柱状图、折线等)

1、使用excel工具自带的图形工具创建一个图: 2、绑定数据区域: 3、数据区域绑定完成,我们要做的就是将数据写入到数据区域中: 4、标记 5、POI 引入包 <!-- https://mvnrepository.com/artifact/org.apache.poi/poi --> <dependency>...

给tomcat配置manager-gui账号

1. 编辑/regulatoryreport/ups/apache-tomcat-8.5.51/conf/Catalina/localhost/manager.xml,添加下面内容: <Context privileged="true" antiResourceLocking="false" docBase="${catalina.home}/web...