【JavaEE進階】MyBatis入門

目錄

🌴前言

🌲什么是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注解,測試哪個類的方法就注入哪個是類)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/895707.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/895707.shtml
英文地址,請注明出處:http://en.pswp.cn/news/895707.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

以太網詳解(八)傳輸層協議:TCP/UDP 協議

文章目錄 傳輸層協議概述為什么需要傳輸層?傳輸層功能網絡層與傳輸層在實現 “端到端” 傳輸的異同兩類服務:面向連接/無連接服務 傳輸控制協議 TCPTCP 協議數據單元格式TCP 的重傳機制快重傳和快恢復快重傳舉例快恢復算法 用戶數據報協議 UDPUDP 概述UDP 基本工作過…

Electron 客戶端心跳定時任務調度庫調研文檔 - Node.js 任務調度庫技術調研文檔

Electron 客戶端心跳定時任務調度庫調研文檔 - Node.js 任務調度庫技術調研文檔 本文將對七個流行的定時任務調度庫:node-cron、rxjs、bull、node-schedule、agenda、bree、cron。這些庫都可以用來處理定時任務,但它們的特點和適用場景有所不同。我們將從…

DeepSeek 開放平臺無法充值 改用其他平臺API調用DeepSeek-chat模型方法

近幾天DeepSeek開放平臺無法充值目前已經關閉狀態,大家都是忙著接入DeepSeek模型 ,很多人想使用DeepSeek怎么辦? 當然還有改用其他平臺API調用方法,本文以本站的提供chatgpt系統為例,如何修改DeepSeek-chat模型API接口…

pix2text 使用經驗

給同行打雞血 😊 構建結構化的數理領域知識庫: 提高可訪問性和可搜索性 Markdown和LaTeX格式:這兩種格式易于在線發布和共享,有助于提高數學內容的可訪問性。搜索引擎優化:將PDF內容轉換為標記語言,可以…

Linux(centos)系統安裝部署MySQL8.0數據庫(GLIBC版本)

安裝前檢查服務器glibc版本,下載對應版本包 rpm -qa | grep glibc mysql安裝包及依賴包已整理好,下載地址:https://pan.quark.cn/s/3137acc814c0,下載即可安裝 一、下載MySQL mysql安裝包及依賴包已整理好,下載地址…

6.2.圖的存儲結構-鄰接矩陣法

一.鄰接矩陣法存儲不帶權圖: 結點不帶權值: 1.左圖的無向圖中,A到B直達的有一條路,所以A行B列的值為1; 左圖的無向圖中,A到F沒有直達的路,所以A行F列的值為0; 結論:無…

【VB語言】EXCEL中VB宏的應用

【VB語言】EXCEL中VB宏的應用 文章目錄 [TOC](文章目錄) 前言一、EXCEL-VB1.實驗過程2.代碼 二、EXCEL-VB 生成.c.h文件1.實驗過程2.代碼 四、參考資料總結 前言 1.WPS-VB擴展包 提示:以下是本篇文章正文內容,下面案例可供參考 一、EXCEL-VB 1.實驗過…

用deepseek學大模型05邏輯回歸

deepseek.com:邏輯回歸的目標函數,損失函數,梯度下降 標量和矩陣形式的數學推導,pytorch真實能跑的代碼案例以及模型,數據,預測結果的可視化展示, 模型應用場景和優缺點,及如何改進解決及改進方法數據推導。…

2025年02月17日Github流行趨勢

項目名稱:OmniParser 項目地址url:https://github.com/microsoft/OmniParser 項目語言:Jupyter Notebook 歷史star數:8971 今日star數:969 項目維護者:yadong-lu, ThomasDh-C, aliencaocao, nmstoker, kris…

RocketMQ 5.0安裝部署

0.前言 在微服務架構逐漸成為主流的今天,消息隊列如同數字世界的快遞員,承擔著系統間高效通信的重要使命。 Apache RocketMQ 自誕生以來,因其架構簡單、業務功能豐富、具備極強可擴展性等特點被眾多企業開發者以及云廠商廣泛采用。歷經十余…

Ubuntu 22.04.5 LTS 安裝企業微信,(2025-02-17安裝可行)

一、依賴包(Ubuntu 20.04/Debian 11) 點擊下載https://www.spark-app.store/download_dependencies_latest 1、 下載最新的依賴包。 請訪問星火應用商店依賴包下載頁面, 下載最新的依賴包。2、解壓依賴包 </

如何使用 HPjtune 分析 Java GC 日志并優化 JVM 性能

HPjtune 是一款用于分析 Java 應用程序垃圾回收&#xff08;GC&#xff09;日志的工具&#xff0c;主要用于優化 JVM 性能。雖然 HPjtune 本身并不直接生成 HTML 格式的報告&#xff0c;但可以通過結合其他工具或方法將分析結果導出為 HTML 格式。以下是實現這一目標的步驟和方…

國產FPGA開發板選擇

FPGA開發板是學習和開發FPGA的重要工具&#xff0c;選擇合適的開發板對學習效果和開發效率至關重要。隨著國產FPGA的發展&#xff0c;淘寶上的許多FPGA開發板店鋪也開始進行國產FPGA的設計和銷售&#xff0c;本文將對國產FPGA和相關店鋪做個簡單梳理&#xff0c;幫助有需要使用…

Java高頻面試之SE-22

hello啊&#xff0c;各位觀眾姥爺們&#xff01;&#xff01;&#xff01;本baby今天又來了&#xff01;哈哈哈哈哈嗝&#x1f436; Java中的Optional了解多少&#xff1f; 在 Java 中&#xff0c;Optional 是 Java 8 引入的一個容器類&#xff0c;用于顯式處理可能為 null 的…

使用OBS和nginx實現直播流

使用OBS和nginx實現直播流&#xff0c;如 1&#xff0c;下載OBS OBS用于視頻錄制和直播的免費開源軟件。在 Windows、Mac 或 Linux 上快速輕松地下載并開始流式傳輸。官網下載 2&#xff0c;下載nginx 注意nginx需要下載帶gryghon版本&#xff0c;這個才有rtmp模塊&#xff0…

PyTorch 源碼學習:閱讀經驗 代碼結構

分享自己在學習 PyTorch 源碼時閱讀過的資料。本文重點關注閱讀 PyTorch 源碼的經驗和 PyTorch 的代碼結構。因為 PyTorch 不同版本的源碼實現有所不同&#xff0c;所以筆者在整理資料時盡可能按版本號升序&#xff0c;版本號見標題前[]。最新版本的源碼實現還請查看 PyTorch 倉…

python實現jaccard系數得出兩個集合的相似度

python實現jaccard系數得出兩個集合的相似度 1、簡介 計算兩個集合之間的Jaccard系數是一種常用的方法,用于衡量這兩個集合的相似度。 Jaccard系數定義為兩個集合交集大小與它們并集大小的比值。 Jaccard 系數的值范圍在 0 到 1 之間,值越大表示兩個集合越相似。 2、求兩個…

小愛音箱控制手機和電視聽歌的嘗試

最近買了小愛音箱pro&#xff0c;老婆讓我扔了&#xff0c;吃灰多年的舊音箱。當然舍不得&#xff0c;比小愛還貴&#xff0c;剛好還有一臺紅米手機&#xff0c;能插音箱&#xff0c;為了讓音箱更加靈活&#xff0c;買了個2元的藍牙接收模塊Type-c供電3.5接口。這就是本次嘗試起…

Pycharm+CodeGPT+Ollama+Deepseek

首先&#xff0c;體驗截圖&#xff1a; 接著&#xff1a; 1、下載Ollama&#xff1a; Download Ollama on macOS 2、下載模型 以1.5b為例&#xff0c;打開命令行&#xff0c;輸入: ollama run deepseek-r1:1.5b 3、Pycharm安裝Code GPT插件 打開PyCharm&#xff0c;找到文…

如何確保 for...in 循環按照特定順序遍歷對象屬性

由于 for...in 循環遍歷對象屬性的順序在 ECMAScript 規范中沒有嚴格規定&#xff0c;若要確保按照特定順序遍歷對象屬性&#xff0c;不能直接依賴 for...in 本身&#xff0c;不過可以借助一些其他方法來實現。以下是幾種常見的解決方案&#xff1a; 1. 使用數組存儲屬性名并排…