整合mybatis
1. 導包:在原有的web項目的基礎上加上
<!--JDBC連接-->
|
2. 其他步驟與普通的ssm步驟類似
這是dao層的文件的格式。
一.在這次配置中遇到的問題:
報錯信息:Loading class `com.mysql.jdbc.Driver'. This is deprecated. The new driver class is `com.mysql.cj.jdbc.Driver'. The driver is automatically registered via the SPI and manual loading of the driver class is generally unnecessary.
該異常是因為連接驅動的問題,可能com.mysql.jdbc.Driver已經過時,在application配置文件中將連接換位com.mysql.cj.jdbc.Driver即可
2.dao層的接口文件的配置:
1. 以前一直以為接口文件是不需要加上Repository的,但是在這次配置中如果接口文件不加上托管注解,在service層直接使用自動注入就會報bean找不到
3.1. 啟動類的位置,一定要放在其他類的上一層,不然就需要加上注解來告訴他掃描的位置,不然是掃描不到Controller類等等的。MapperScan注解是因為下一個問題。
4.
終極問題:Invalid bound statement (not found)
1. 給我的提示是Invalid bound statement (not found): com.zy100.dao.HouseMapper.findHouseInfo,
他的意思是找不到我的findHouseInfo方法,這種錯誤的原因百度如下:
1. Namespace的值寫錯了,一定要是包名加上mapper文件名並且不帶后綴
2. 接口文件的名字一定要和xml文件的名字相同,不然也可能會報錯
3. 標簽的id,這個問題一般不會犯錯,因為都是復制的,我重新復制了好幾遍,重啟之后還是同樣的報錯,然后我就放棄了,百度上說的大致都是上面這三條
然后我開始懷疑會不會因為mapper文件並沒有被掃描到,然后通過百度找到了一個掃描mapper文件的方法,也就是第三步中說過的@MapperScan注解
這個注解可以設置掃描的路徑,放在主方法上面,如果在resources下的話只需要將路徑改為classpath:com.zy100.dao即可,原以為一切皆大歡喜,誰知道運行后這個讓人頭大的問題又出來了!就算是我將路徑改成了classpath:com.zy100.dao,並且在resources文件夾下創建與dao層接口文件相同的包名,將xml文件復制下來也不行。
4.百度上說xml文件必須放在resources下,但是我目前實現的是放在java文件夾下,因為我想到了idea不會掃描java文件夾下面的xml文件夾,但是可以在pom文件中進行配置讓她掃描編譯xml文件
<!--不添加的話java文件夾下Mapper文件不被掃描-->
|
在加上這個之后,終於換了一個報錯,其實在這樣做之后就差不多成功了,我最后的包結構就是第一張圖,xml文件和接口文件位於同一包下,主方法直接放在了與他們包同級的文件夾下,所以主方法上面那個SpringBootApplication注解中的內容可以加也可以不加,如果是在同一文件夾下或者是在上級包的上級的位置就需要加上。
1. 最后兩個簡單報錯, java.sql.SQLException: The server time zone value '�й���ʱ��' is unrecognized or represents more than one time zone”
這個是因為編碼格式的問題
在application.properties中連接數據庫的時候拼接
?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf-8 |
1. 粗心的報了一錯誤,大家估計不會遇到
java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YES) |
這個錯誤是
這個是因為當時賬號密碼都是填寫的root,后來想起來是123456
1.
報錯信息:Loading class `com.mysql.jdbc.Driver'. This is deprecated. The new driver class is `com.mysql.cj.jdbc.Driver'. The driver is automatically registered via the SPI and manual loading of the driver class is generally unnecessary.
該異常是因為連接驅動的問題,可能com.mysql.jdbc.Driver已經過時,在application配