关闭

mybatis java.sql.SQLException: ORA-00907: 缺失右括号

1774人阅读 评论(0) 收藏 举报
分类:

mybatis java.sql.SQLException: ORA-00907: 缺失右括号

url: http://flyeagle.iteye.com/blog/1883980

2013-06-07 16:42

 在使用spring+mybatis进行应用开发时,使用了mybatis的动态SQL,添加动态查询语句:

Xml代码  收藏代码
  1. <select id="getSpasDataLogList"  resultType="com.xxx.xxx.xxxBean" resultMap="spasDataLogMap">  
  2.      <![CDATA[  
  3.       select * from t_table where datetime > #to_DATE(#{startDate}, 'yyyy-mm-dd') 
  4.        <if test="datafrom!= null and datafrom!= ''"> AND a.datafrom like #{datafrom} </if> 
  5.        ]]>   
  6. </select>  

 添加动态查询语句: 

Xml代码  收藏代码
  1. <if test="datafrom!= null and datafrom!= ''"> AND a.datafrom like #{datafrom} </if>   

   报java.sql.SQLException: ORA-00907: 缺失右括号  错误。去除

Xml代码  收藏代码
  1. <if test="datafrom!= null and datafrom!= ''"> AND a.datafrom like #{datafrom} </if>   

 后可以正常执行,原来添加

Xml代码  收藏代码
  1. <![CDATA[ ]]>   

后解析器不对它进行解析<if>不会当mybatis的标签解析,而是以大于符号和小于符号进行解析,所以报错。去除

Xml代码  收藏代码
  1. <![CDATA[ ]]>   

但是,去除<![CDATA[ ]]> 后,发现

Xml代码  收藏代码
  1. datetime > #to_DATE(#{startDate}, 'yyyy-mm-dd')  

 

又报错,需要对大于符号进行转义,修改成:

Xml代码  收藏代码
  1. datetime &gt; #to_DATE(#{startDate}, 'yyyy-mm-dd')  

问题解决。

转义表:

> &gt; 大于
< &lt; 小于
& &amp;
>= &gt;= 大于等于
<= &lt;= 小于等于

 

 

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:2071305次
    • 积分:14744
    • 等级:
    • 排名:第822名
    • 原创:85篇
    • 转载:427篇
    • 译文:0篇
    • 评论:145条
    最新评论