IBatis的 Error parsing XPath '/sqlMap/delete' java.util.NoSuchElementException错误

IBatis的 Error parsing XPath '/sqlMap/delete' java.util.NoSuchElementException异常

最近使用IBatis框架发现一个异常

Caused by: com.ibatis.common.xml.NodeletException: Error parsing XML.  Cause: java.lang.RuntimeException: Error parsing XPath '/sqlMap/delete'.  Cause: java.util.NoSuchElementException
        at com.ibatis.common.xml.NodeletParser.parse(NodeletParser.java:62)
        at com.ibatis.sqlmap.engine.builder.xml.SqlMapParser.parse(SqlMapParser.java:44)
        at com.ibatis.sqlmap.engine.builder.xml.SqlMapConfigParser$10.process(SqlMapConfigParser.java:257)
        at com.ibatis.common.xml.NodeletParser.processNodelet(NodeletParser.java:121)
        ... 98 more
Caused by: java.lang.RuntimeException: Error parsing XPath '/sqlMap/delete'.  Cause: java.util.NoSuchElementException
        at com.ibatis.common.xml.NodeletParser.processNodelet(NodeletParser.java:123)
        at com.ibatis.common.xml.NodeletParser.process(NodeletParser.java:84)
        at com.ibatis.common.xml.NodeletParser.process(NodeletParser.java:102)
        at com.ibatis.common.xml.NodeletParser.parse(NodeletParser.java:72)
        at com.ibatis.common.xml.NodeletParser.parse(NodeletParser.java:60)
        ... 101 more
Caused by: java.util.NoSuchElementException
        at java.util.StringTokenizer.nextToken(StringTokenizer.java:332)
        at com.ibatis.sqlmap.engine.mapping.parameter.InlineParameterMapParser.parseInlineParameterMap(InlineParameterMapParser.java:55)
        at com.ibatis.sqlmap.engine.builder.xml.XMLSqlSource.parseDynamicTags(XMLSqlSource.java:62)
        at com.ibatis.sqlmap.engine.builder.xml.XMLSqlSource.getSql(XMLSqlSource.java:33)
        at com.ibatis.sqlmap.engine.config.MappedStatementConfig.<init>(MappedStatementConfig.java:79)
        at com.ibatis.sqlmap.engine.config.SqlMapConfiguration.newMappedStatementConfig(SqlMapConfiguration.java:159)
        at com.ibatis.sqlmap.engine.builder.xml.SqlStatementParser.parseGeneralStatement(SqlStatementParser.java:73)
        at com.ibatis.sqlmap.engine.builder.xml.SqlMapParser$20.process(SqlMapParser.java:357)
        at com.ibatis.common.xml.NodeletParser.processNodelet(NodeletParser.java:121)

 

当然也可以是这个异常

Caused by: java.lang.RuntimeException: Error parsing XPath '/sqlMap/insert'.  Cause: java.util.NoSuchElementException
        at com.ibatis.common.xml.NodeletParser.processNodelet(NodeletParser.java:123)
        at com.ibatis.common.xml.NodeletParser.process(NodeletParser.java:84)
        at com.ibatis.common.xml.NodeletParser.process(NodeletParser.java:102)
        at com.ibatis.common.xml.NodeletParser.parse(NodeletParser.java:72)
        at com.ibatis.common.xml.NodeletParser.parse(NodeletParser.java:60)
        ... 101 more

 或者是这个异常

Caused by: java.lang.RuntimeException: Error parsing XPath '/sqlMap/select'.  Cause: java.util.NoSuchElementException
        at com.ibatis.common.xml.NodeletParser.processNodelet(NodeletParser.java:123)
        at com.ibatis.common.xml.NodeletParser.process(NodeletParser.java:84)
        at com.ibatis.common.xml.NodeletParser.process(NodeletParser.java:102)
        at com.ibatis.common.xml.NodeletParser.parse(NodeletParser.java:72)
        at com.ibatis.common.xml.NodeletParser.parse(NodeletParser.java:60)
        ... 101 more

 大部分原因是你sqlmap中的xml的delete、select或者insert语句中有#字符没有成对出现导致这个异常,属于sql语法错误导致的