`
cloudstars
  • 浏览: 40444 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

mybatis的条件test语句当与单个字符比较时报NumberFormatException: For input string问题

 
阅读更多

错误描述:

<select id="sqlId" resultType="net.test.Statement">
        select *
        from table
        where TRUE
        <if test="type == 'A'">
            AND column = #{column}
        </if>
    </select>

当使用的type为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 = "type eq 'A'.toString()"
2.原因是OGNL语法的问题:
这里 'A' 将被认为是 char 类型,但是 'AA' 或者 "A" 将被作为String类型。

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

分享到:
评论

相关推荐

    Mybatis案例一所用建表语句

    本文将深入探讨Mybatis的基础知识,特别是针对“Mybatis案例一所用建表语句”,并结合MySQL数据库的相关知识进行讲解。 首先,我们来理解Mybatis的核心概念。Mybatis主要由三部分组成:XML或注解方式的SQL映射文件...

    Mybatis执行SQL语句的方式

    Mybatis 执行 SQL 语句的方式 Mybatis 是一个基于 Java 的持久层框架,它提供了多种方式来执行 SQL 语句。在本文中,我们将介绍三种执行 SQL 语句的方式:通过 Mapper 接口、通过 XML 配置文件、通过 SqlSession ...

    mybatis动态SQL语句

    if 、where、set、trim、choose 、foreach等在mybatis中的具体用法,有具体实例可供参考,玩转mybatis

    mybatis自动生成语句

    关于mybatis自动生成语句,还有一些jar,需要的联系我

    Mybatis现学现用

    以最短的时间学会Mybatis,并使用到项目中,包括搜集的很多资料;很全很全:并且有项目实例 例如:mybatis中的#和$的区别? 1. #将传入的数据都当成一个字符串,会对自动传入的数据加一个双引号。如:order by #user...

    mybatis collection list string

    标题 "mybatis collection list string" 暗示了我们讨论的主题是关于MyBatis框架中与集合(List)和字符串(String)处理相关的问题。在MyBatis这个强大的持久层框架中,集合和字符串的使用非常常见,尤其是在进行数据库...

    mybatis Mapper.xml中传参多选 字符串形式逗号分隔 AND中拼接OR.rar

    在Mybatis中,我们经常需要处理复杂的SQL查询,其中涉及到多条件筛选,这些条件可能是可选的,并且可能需要在`AND`与`OR`之间灵活切换。标题和描述所提及的问题是关于如何在Mapper.xml文件中处理字符串形式的参数,...

    mybatis_test09_mybatis_Mine!_

    在IT行业中,MyBatis是一个广泛使用的持久层框架,它允许开发者将SQL语句与Java代码相结合,提供了灵活且强大的数据库操作能力。本项目“mybatis_test09_mybatis_Mine!”显然是一份关于个人学习MyBatis的资料,旨在...

    mybatis test 项目

    在这个"mybatis test"项目中,我们将深入探讨如何结合MyBatis与Servlet进行开发,并通过Servlet + Listener来测试和管理应用。 首先,我们要理解MyBatis的基本概念。MyBatis将SQL语句与Java代码分离,通过XML或注解...

    mybatis直接执行sql语句后续之一

    在IT行业中,MyBatis是一个广泛使用的持久层框架,它允许开发者直接编写SQL语句,提供了灵活的数据访问和映射机制。这篇博客“mybatis直接执行sql语句后续之一”可能探讨了如何在MyBatis中高效且有效地执行SQL操作。...

    springmybatis

    MyBatis 目录(?)[-] mybatis实战教程mybatis in action之一开发环境搭建 mybatis实战教程mybatis in action之二以接口的方式编程 mybatis实战教程mybatis in action之三实现数据的增删改查 mybatis实战教程mybatis ...

    Mybatis中SQL语句的编写.pdf

    ### MyBatis中SQL语句的编写 #### 一、概述 在MyBatis框架中,SQL语句的编写是一项核心任务。MyBatis作为一款优秀的持久层框架,支持多种方式来定义SQL语句,包括XML配置文件和注解等方式。本文档主要介绍在XML配置...

    mybatis+spring 框架中配置日志中显示sql语句

    在MyBatis与Spring整合的框架中,为了便于调试和性能优化,我们常常需要在日志中打印出执行的SQL语句。以下是如何在这样的环境中配置日志来显示SQL语句的详细步骤。 首先,我们需要了解MyBatis的日志实现。MyBatis...

    Mybatis_test.zip

    Mybatis_test.zip是一个包含与Mybatis数据库查询相关的资源的压缩包。Mybatis是Java开发中的一个持久层框架,它提供了一种映射SQL语句到Java对象的方式,从而简化了数据库操作。在这个压缩包中,我们可以期待找到...

    mybatis动态sql语句详解

    ### MyBatis动态SQL语句详解 #### 一、MyBatis简介 MyBatis是一个优秀的持久层框架,它支持自定义SQL语句、存储过程以及高级映射功能。通过使用MyBatis,开发人员可以避免编写大量的JDBC代码和手动设置参数以及...

    mybatis unit test

    标题 "mybatis unit test" 涉及到的是在Java开发中使用MyBatis框架进行单元测试的方法。MyBatis是一个轻量级的持久层框架,它允许开发者将SQL语句直接映射到Java代码中,提高了开发效率。在这个主题中,我们将探讨...

    mybatis常用语句和lyaui 多条件查询加分页

    ### MyBatis常用语句详解及Lyaui多条件查询加分页 #### 一、概述 在本篇文章中,我们将详细介绍MyBatis框架中的几种常用SQL语句编写方法及其应用场景,特别是针对数据库的增删改查操作。这些操作是任何Web应用开发...

    Mybatis在Mapper.xml文件中的转义字符处理方式.pdf

    为了解决这个问题,Mybatis提供了一些处理转义字符的方式,以确保SQL语句能够正确地写入Mapper.xml文件中并被解析。 在Mapper.xml文件中处理转义字符的常见方法主要有以下几种: 1. 常用的XML转义字符写法 在XML中...

    Mybatis中执行String类型的自己拼写的sql,不执行配置文件中的sql

    在MyBatis框架中,有时候我们可能需要在代码中直接编写SQL语句,而不是通过XML配置文件来执行SQL。这种情况通常发生在动态SQL或者特定场景下的临时查询中。本篇文章将详细探讨如何在MyBatis中执行String类型的自定义...

    mybatis-test.rar

    标题 "mybatis-test.rar" 暗示这是一个包含MyBatis测试项目的压缩文件,而描述指出它是基于SpringBoot构建的,使用了MyBatis作为持久层框架,并且提到了IntelliJ IDEA中的MyBatis代码生成插件。标签进一步确认了主要...

Global site tag (gtag.js) - Google Analytics