目錄
🌴前言
🌲什么是MyBatis?
🌳準備工作
🚩創建工程
🚩配置數據庫連接字符串
🚩數據準備
🚩編寫持久層代碼
🍃單元測試
🌴前言
在應?分層學習時,我們了解到web應?程序?般分為三層,即:Controller、Service、Dao.
之前的案例中,請求流程如下:瀏覽器發起請求,先請求Controller,Controller接收到請求之后,調? Service進?業務邏輯處理,Service再調?Dao,但是Dao層的數據是Mock的,真實的數據應該從數據庫中讀取.
我們學習MySQL數據庫時,已經學習了JDBC來操作數據庫,但是JDBC操作太復雜了
JDBC操作簡單回顧:
- 1. 創建數據庫連接池DataSource
- 2. 通過DataSource獲取數據庫連接Connection
- 3. 編寫要執?帶?占位符的SQL語句
- 4. 通過Connection及SQL創建操作命令對象Statement
- 5. 替換占位符:指定要替換的數據庫字段類型,占位符索引及要替換的值
- 6. 使?Statement執?SQL語句
- 7. 查詢操作:返回結果集ResultSet,更新操作:返回更新的數量
- 8. 處理結果集
- 9. 釋放資源
🌲什么是MyBatis?
MyBatis是?款優秀的持久層框架,?于簡化JDBC的開發。
- MyBatis本是Apache的?個開源項?iBatis,2010年這個項?由apache遷移到了google code,并且改名為MyBatis。2013年11?遷移到Github
- 官網:MyBatis中文網
在上?我提到?個詞:持久層
- 持久層:指的就是持久化操作的層,通常指數據訪問層(dao),是?來操作數據庫的.
?
簡單來說MyBatis是更簡單完成程序和數據庫交互的框架,也就是更簡單的操作和讀取數據庫?具
接下來,我們就通過?個??程序,讓?家感受?下通過Mybatis如何來操作數據庫
🌳準備工作
🚩創建工程
創建springboot?程,并導?mybatis的起步依賴、mysql的驅動包
這里只演示導入mybatis的起步依賴、mysql的驅動包。不會創建springboot的小伙伴參考博主寫的?【JavaEE進階】第一個Spring Boot程序_java ee boot-CSDN博客
?
項??程創建完成后,?動在pom.xml?件中,導?Mybatis依賴和MySQL驅動依賴?
此時運行項目的話就會報錯:?
只要把pom文件中關于mybatis的依賴注釋掉,就可以運行,此處不在展示
我們在添加完mybatis依賴之后,需要進行數據庫的配置
🚩配置數據庫連接字符串
Mybatis中要連接數據庫,需要數據庫相關參數配置
- MySQL驅動類
- 登錄名
- 密碼
- 數據庫連接字符串
application.yml配置文件如下:?
🚩數據準備
創建用戶表,并創建對應的實體類User?
創建userinof表如下?
當前已經創建好了一張表,若想做查詢操作,那么查詢出來需要放到一個對象中,那么就需要創建對應的實體類UserInfo
由于數據庫單詞之間采用蛇形,而java單詞之間喜歡采用駝峰,所以這里我們進行一個簡單的轉換。其他實體類的屬性名與表中的字段名??對應
代碼:?
🚩編寫持久層代碼
我們通過mybatis來實現:select * from userinfo;
在項?中,創建持久層接?UserInfoMapper
我們在該接口中提供一個方法,希望用它來完成上述sql語句的查詢
代碼:
Mybatis的持久層接?規范?般都叫XxxMapper
@Mapper注解:表?是MyBatis中的Mapper接?
- 程序運?時,框架會?動?成接?的實現類對象(代理對象),并給交Spring的IOC容器管理
- @Select注解:代表的就是select查詢,也就是注解對應?法的具體實現內容.
🍃單元測試
我們需要測試哪一個方法,就在該方法范圍中直接生成測試代碼即可。
第一步:在{}范圍內點擊右鍵
第二步:
第三步:
第四步:勾選你需要生成測試的方法(當前只有寫了這一個方法),點擊OK即可
此時就會在Test文件中,生成測試類:測試類上添加了注解@SpringBootTest,該測試類在運?時,就會?動加載Spring的運?環境.我們通過@Autowired這個注解,注?我們要測試的類,就可以開始進?測試了需要加上@SpringBootTest注解
編寫測試代碼:
運行結果:
總結:Mybatis操作步驟
- 1. 引入依賴(mybatis/mysql)
- 2. 配置數據庫相關信息
- 3. 數據準備,實體類準備
- 4. 編寫Mapper代碼(編寫的是接口,@Mapper注解)
- 5. 編寫測試代碼(@SpringBootTest注解,測試哪個類的方法就注入哪個是類)