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

 

 在使用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 &gt; #to_DATE(#{startDate}, 'yyyy-mm-dd')

问题解决。

转义表:

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

 

 

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值