您的位置:首页 > 编程语言 > Java开发

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

2015-11-17 22:35 786 查看

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

url: http://flyeagle.iteye.com/blog/1883980
2013-06-07 16:42

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

Xml代码  


<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>  

 添加动态查询语句: 

Xml代码  


<if test="datafrom!= null and datafrom!= ''"> AND a.datafrom like #{datafrom} </if>   

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

Xml代码  


<if test="datafrom!= null and datafrom!= ''"> AND a.datafrom like #{datafrom} </if>   

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

Xml代码  


<![CDATA[ ]]>   

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

Xml代码  


<![CDATA[ ]]>   

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

Xml代码  


datetime > #to_DATE(#{startDate}, 'yyyy-mm-dd')  

 

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

Xml代码  


datetime > #to_DATE(#{startDate}, 'yyyy-mm-dd')  

问题解决。

转义表:

>>大于
<<小于
&&
>=>=大于等于
<=<=小于等于
 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: