SpringBoot整合mybatis碰到的問題


整合mybatis

1.  導包:在原有的web項目的基礎上加上

<!--JDBC連接-->
   
<dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
    </dependency>
    <!--mybatis依賴-->
   
<dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>fastjson</artifactId>
        <version>1.2.46</version>
    </dependency>
    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>druid</artifactId>
        <version>1.1.0</version>
    </dependency>
    <dependency>
        <groupId>org.mybatis.spring.boot</groupId>
        <artifactId>mybatis-spring-boot-starter</artifactId>
        <version>1.3.0</version>
    </dependency>
</dependencies>

 

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文件不被掃描-->
   
<resource>
        <
directory>src/main/java</directory>
        <
includes>
            <
include>**/*.properties</include>
            <
include>**/*.xml</include>
        </
includes>
        <
filtering>false</filtering>
    </
resource>
</
resources>

 

 在加上這個之后,終於換了一個報錯,其實在這樣做之后就差不多成功了,我最后的包結構就是第一張圖,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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM