報錯情況如下:
com.ibatis.sqlmap.client.SqlMapException: There is no statement named Control.insert-control in this SqlMap. at com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.getMappedStatement(SqlMapExecutorDelegate.java:231) at com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate.insert(SqlMapExecutorDelegate.java:367) at com.ibatis.sqlmap.engine.impl.SqlMapSessionImpl.insert(SqlMapSessionImpl.java:82) at com.ibatis.sqlmap.engine.impl.SqlMapClientImpl.insert(SqlMapClientImpl.java:58)
原因大概有三種情況:
1. 你的sqlmap 文件中確實沒有xxx這個statement ,很有可能某個字母寫錯了。
2. 實體映射文件未加入到sqlMap-Config.xml文件中。
原因是:框架只讀取sqlMap-Config.xml文件,對新建的sqlMap引入文件即使注入bean也不予理睬。將引入文件加入sqlMap-Config.xml就可以解決問題。
把用到xml文件加到sqlMap-Config.xml中引入就可以了
2. sqlmap文件配置定義了使用namespace屬性,useStatementNamespaces="true",此時在本文件中引用別的statement,就需要這樣寫:(你的namespace).(定義的statement 的id),如果把namespace屬性漏了,就被報此異常。