错误描述:
<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 == "A"">
3.或者将 <if test="type == 'A'"> 改为 <if test='type == "A"'>。
相关推荐
本文将深入探讨Mybatis的基础知识,特别是针对“Mybatis案例一所用建表语句”,并结合MySQL数据库的相关知识进行讲解。 首先,我们来理解Mybatis的核心概念。Mybatis主要由三部分组成:XML或注解方式的SQL映射文件...
Mybatis 执行 SQL 语句的方式 Mybatis 是一个基于 Java 的持久层框架,它提供了多种方式来执行 SQL 语句。在本文中,我们将介绍三种执行 SQL 语句的方式:通过 Mapper 接口、通过 XML 配置文件、通过 SqlSession ...
if 、where、set、trim、choose 、foreach等在mybatis中的具体用法,有具体实例可供参考,玩转mybatis
关于mybatis自动生成语句,还有一些jar,需要的联系我
以最短的时间学会Mybatis,并使用到项目中,包括搜集的很多资料;很全很全:并且有项目实例 例如:mybatis中的#和$的区别? 1. #将传入的数据都当成一个字符串,会对自动传入的数据加一个双引号。如:order by #user...
标题 "mybatis collection list string" 暗示了我们讨论的主题是关于MyBatis框架中与集合(List)和字符串(String)处理相关的问题。在MyBatis这个强大的持久层框架中,集合和字符串的使用非常常见,尤其是在进行数据库...
在Mybatis中,我们经常需要处理复杂的SQL查询,其中涉及到多条件筛选,这些条件可能是可选的,并且可能需要在`AND`与`OR`之间灵活切换。标题和描述所提及的问题是关于如何在Mapper.xml文件中处理字符串形式的参数,...
在IT行业中,MyBatis是一个广泛使用的持久层框架,它允许开发者将SQL语句与Java代码相结合,提供了灵活且强大的数据库操作能力。本项目“mybatis_test09_mybatis_Mine!”显然是一份关于个人学习MyBatis的资料,旨在...
在这个"mybatis test"项目中,我们将深入探讨如何结合MyBatis与Servlet进行开发,并通过Servlet + Listener来测试和管理应用。 首先,我们要理解MyBatis的基本概念。MyBatis将SQL语句与Java代码分离,通过XML或注解...
在IT行业中,MyBatis是一个广泛使用的持久层框架,它允许开发者直接编写SQL语句,提供了灵活的数据访问和映射机制。这篇博客“mybatis直接执行sql语句后续之一”可能探讨了如何在MyBatis中高效且有效地执行SQL操作。...
MyBatis 目录(?)[-] mybatis实战教程mybatis in action之一开发环境搭建 mybatis实战教程mybatis in action之二以接口的方式编程 mybatis实战教程mybatis in action之三实现数据的增删改查 mybatis实战教程mybatis ...
### MyBatis中SQL语句的编写 #### 一、概述 在MyBatis框架中,SQL语句的编写是一项核心任务。MyBatis作为一款优秀的持久层框架,支持多种方式来定义SQL语句,包括XML配置文件和注解等方式。本文档主要介绍在XML配置...
在MyBatis与Spring整合的框架中,为了便于调试和性能优化,我们常常需要在日志中打印出执行的SQL语句。以下是如何在这样的环境中配置日志来显示SQL语句的详细步骤。 首先,我们需要了解MyBatis的日志实现。MyBatis...
Mybatis_test.zip是一个包含与Mybatis数据库查询相关的资源的压缩包。Mybatis是Java开发中的一个持久层框架,它提供了一种映射SQL语句到Java对象的方式,从而简化了数据库操作。在这个压缩包中,我们可以期待找到...
### MyBatis动态SQL语句详解 #### 一、MyBatis简介 MyBatis是一个优秀的持久层框架,它支持自定义SQL语句、存储过程以及高级映射功能。通过使用MyBatis,开发人员可以避免编写大量的JDBC代码和手动设置参数以及...
标题 "mybatis unit test" 涉及到的是在Java开发中使用MyBatis框架进行单元测试的方法。MyBatis是一个轻量级的持久层框架,它允许开发者将SQL语句直接映射到Java代码中,提高了开发效率。在这个主题中,我们将探讨...
### MyBatis常用语句详解及Lyaui多条件查询加分页 #### 一、概述 在本篇文章中,我们将详细介绍MyBatis框架中的几种常用SQL语句编写方法及其应用场景,特别是针对数据库的增删改查操作。这些操作是任何Web应用开发...
为了解决这个问题,Mybatis提供了一些处理转义字符的方式,以确保SQL语句能够正确地写入Mapper.xml文件中并被解析。 在Mapper.xml文件中处理转义字符的常见方法主要有以下几种: 1. 常用的XML转义字符写法 在XML中...
在MyBatis框架中,有时候我们可能需要在代码中直接编写SQL语句,而不是通过XML配置文件来执行SQL。这种情况通常发生在动态SQL或者特定场景下的临时查询中。本篇文章将详细探讨如何在MyBatis中执行String类型的自定义...
标题 "mybatis-test.rar" 暗示这是一个包含MyBatis测试项目的压缩文件,而描述指出它是基于SpringBoot构建的,使用了MyBatis作为持久层框架,并且提到了IntelliJ IDEA中的MyBatis代码生成插件。标签进一步确认了主要...