javaweb项目报“Cause: java.sql.SQLSyntaxErrorException: ORA-00936: 缺失表达式”错误,从SQLSyntaxErrorException这个单词就可以看出是我们mybatis mapper.xml文件里面的sql语句错误了,于是我检查了自己的mapper.xml文件,先看看我错误的sql语句。
<select id="findExamResultByArr" parameterType="java.lang.Long" resultMap="BaseResultMap"> select t.QUESTION_ID, t.MY_ANSWER,t.IS_RIGHT from TBL_EXAM_RESULT t where t.EXAM_ID in <foreach item="id" collection="array" open="(" separator="," close=")">> #{id} </foreach> and t.IS_RIGHT == 0 </select>
Cause: java.sql.SQLSyntaxErrorException: ORA-00936: 缺失表达式的意思就是说你缺失了一些符号或者是多了一些不必要的符号,从上面可以看出有两点错误,正确的语句应该是如下这样的。
<select id="findExamResultByArr" parameterType="java.lang.Long" resultMap="BaseResultMap"> select t.QUESTION_ID, t.MY_ANSWER,t.IS_RIGHT from TBL_EXAM_RESULT t where t.EXAM_ID in <foreach item="id" collection="array" open="(" separator="," close=")"> #{id} </foreach> and t.IS_RIGHT = 0 </select>
我的语句多了一个尖括号“>” 和一个等于号“=”,因此以后写sql语句的时候报ORA-00936: 缺失表达式错误,都是因为多了符号或少了符号。