nainai1 发表于 2016-11-27 09:34:52

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>
  后可以正常执行,原来添加

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

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

datetime > #to_DATE(#{startDate}, 'yyyy-mm-dd')
  又报错,需要对大于符号进行转义,修改成:

datetime &gt; #to_DATE(#{startDate}, 'yyyy-mm-dd')
  问题解决。
  转义表:



>
&gt;
大于


<
&lt;
小于


&
&amp;



>=
&gt;=
大于等于


<=
&lt;=
小于等于

页: [1]
查看完整版本: mybatis java.sql.SQLException: ORA-00907: 缺失右括号