mybatis和springmvc整合遇到的問題小結

lkj41110發表於2016-12-13
最近幾天一直都在學習springmvc,mybatis以及之間的整合,今天是第一次整合,出現很多問題。

1.BeanDefinitionParsingException: Configuration problem: Unable to locate Spring NamespaceHandler Configuration problem: Unable to locate Spring NamespaceHandler for XML schema namespace [http://www.springframework.org/schema/tx
這個是因為沒有匯入對應的配置檔案,有2種種情況:
1.spring的配置檔案標頭檔案寫錯了,所以locate定位不到
2.沒有匯入包


2.Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection; nested exception is org.apache.commons.dbcp.SQLNestedException: Cannot load JDBC driver class '${jdbc.driver}'

這個好像是mybatis存在的一個問題,網上的解釋是: 原因是在spring裡使用org.mybatis.spring.mapper.MapperScannerConfigurer 進行自動掃描的時候,設定了sqlSessionFactory 的話,可能會導致PropertyPlaceholderConfigurer失效,也就是用${jdbc.username}這樣之類的表示式,將無法獲取到properties檔案裡的內容。 導致這一原因是因為,MapperScannerConigurer實際是在解析載入bean定義階段的,這個時候要是設定sqlSessionFactory的話,會導致提前初始化一些類,這個時候,PropertyPlaceholderConfigurer還沒來得及替換定義中的變數,導致把表示式當作字串複製了。

然後,根據網上的方法也不行,我就把資料庫在spring配置檔案裡寫死了。網上也有人說把mybatis-spring1.2.2換成老一點的包也行。(我沒有試過)希望可以找到更好的解決方法


3.Cause: java.sql.SQLException: ORA-00911: 無效字元

這個問題時由於我們在mybats的mapper.xml對應的xml檔案中sql語句有錯誤產生的,一定要把日誌產生的sql到資料庫中執行一下,看看哪裡有錯誤。並且mapper的sql語句的最後,千萬別加;號,加了後會報無效字元的資訊,控制檯的sql語句也會顯示正確,導致很難找到錯誤。

相關文章