mybatis java.sql.SQLException: ORA-00907: 缺失右括号
url: http://flyeagle.iteye.com/blog/1883980
2013-06-07 16:42
在使用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')
问题解决。
转义表:
> | > | 大于 |
< | < | 小于 |
& | & | 和 |
>= | >= | 大于等于 |
<= | <= | 小于等于 |