在使用spring+mybatis进行应用开发时,使用了mybatis的动态SQL,添加动态查询语句:
<select id="getSpasDataLogList" resultType="com.xxx.xxx.xxxBean" resultMap="spasDataLogMap"> <![CDATA[ select * from t_table where datetime > #to_DATE(#{startDate}, 'yyyy-mm-dd') <if test="datafrom!= null and datafrom!= ''"> AND a.datafrom like #{datafrom} </if> ]]> </select>
添加动态查询语句:
<if test="datafrom!= null and datafrom!= ''"> AND a.datafrom like #{datafrom} </if>
报java.sql.SQLException: ORA-00907: 缺失右括号 错误。去除
<if test="datafrom!= null and datafrom!= ''"> AND a.datafrom like #{datafrom} </if>
后可以正常执行,原来添加
<![CDATA[ ]]>
后解析器不对它进行解析<if>不会当mybatis的标签解析,而是以大于符号和小于符号进行解析,所以报错。去除
<![CDATA[ ]]>
但是,去除<![CDATA[ ]]> 后,发现
datetime > #to_DATE(#{startDate}, 'yyyy-mm-dd')
又报错,需要对大于符号进行转义,修改成:
datetime > #to_DATE(#{startDate}, 'yyyy-mm-dd')
问题解决。
转义表:
> | > | 大于 |
< | < | 小于 |
& | & | 和 |
>= | >= | 大于等于 |
<= | <= | 小于等于 |
相关推荐
在oracle里面运行一下,解决Exception java.sql.SQLException ORA-00600 内部错误代码
今天在项目中,使用Mybatis对oracle数据库进行操作的时候,报出ORA-00911: invalid character的错误,检查了一下SQL,发现都书写正确啊,复制到plsql上执行也都没问题,这什么原因呢? 注意:这里说的是用navicat...
### ORA-01460 错误原因分析 #### 概述 在Oracle数据库操作过程中,可能会遇到ORA-01460错误,该错误全称为“ORA-01460: 转换请求无法实现或不合理”。这一错误通常发生在数据类型转换或者与操作系统之间的数据...
java.sql.SQLSyntaxErrorException: ORA-00911: 无效字符 ``` 这通常是因为 SQL 语句中存在非法字符,如多余的分号(`;`)。例如: ```xml select * from (select id, name, nvl(pid, '无') pid from t_resource...
import java.sql.SQLException; ``` 3. **数据库连接信息**:为了建立连接,你需要Oracle数据库的URL、用户名和密码。URL的格式通常是: ```java jdbc:oracle:thin:@//hostname:port/service_name ``` 其中,...
6. **面向对象封装**:将数据库记录映射为Java对象(ORM,Object-Relational Mapping),如使用Hibernate或MyBatis框架,使得数据库操作更加面向对象。 7. **批处理操作**:允许一次提交多个SQL语句,提高效率。 8...