SSM 整合時出現的一些錯誤以及解決方法
阿新 • • 發佈:2020-12-27
技術標籤:bug 解決ssmjavaspringmybatis
在整合SSM時,由於配置較多,很容易出錯,有時候一時半會也找不到錯誤,今天就用這篇文章記錄下本人遇到的錯誤以及解決方法。
Mybaits 部分
Mybatis 部分是很容易出錯的部分,原因是其配置較多,特別是一些細節的地方,千萬要細心。
資料庫連線錯誤
Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: Failed to obtain JDBC Connection; nested exception is java.sql.SQLException: An attempt by a client to checkout a Connection has timed out.
原因:資料庫配置檔案 database.properties 有錯
正確的格式應如下:
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mybatis?useSSL=false&useUnicode=true&characterEncoding=UTF-8
jdbc.username=root
jdbc.password=123456
注意這裡的 useSSL要為 false ,一開始寫的是 true 就報上述錯誤,檢查了 mybatis 配置檔案以及 sql 發現都沒錯,最後找了很久才發現原來是資料庫配置檔案的問題
資源匯出問題
在 Mybatis 部分,Mapper.xml 要與 Mapper 介面的包名一致,如果將 Mapper.xml 放在 java 目錄下,Maven 不會匯出該資源,需在 pom.xml 中新增匯出 xml 資源的程式碼才行。
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<includes>
< include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>false</filtering>
</resource>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>false</filtering>
</resource>
</resources>
</build>
Mapper 中方法找不到
org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.xie.dao.BooksMapper.queryBookById
原因:Mapper 有問題,檢查 Mapper 掃描是否有出錯,Mapper 是否繫結好 java 介面,同時還有標籤名要與方法名一致!(本人就在這裡錯誤,原因是 ID 的拼寫大小寫出錯!)
Spring MVC 部分
啟動 Tomcat 後訪問首頁出錯
原因:資源沒有正確新增,檢查編譯後的檔案的WEB-INF目錄下是否有 lib 目錄,如果沒有就是錯的
解決方法:在 Project Structure 中,進入到 Artifacts 中,新增 lib 目錄並將 Maven 依賴匯入
注意:lib 目錄必須在 WEB-INF 目錄下!!!
最後
報錯時要靜下心來,仔細分析可能出現問題的地方,最好用 junit 進行測試,就寫點測試程式碼也不麻煩,當然,學會搜尋解決方案也十分重要,解決 bug 也是一個成長的過程!