Mybatis入門到精通

一:什么是Mybatis

二:Mybatis就是簡化jdbc代碼的

三:Mybatis的操作步驟

1:在數據庫中創建一個表,并添加數據

我們這里就省略了

2:Mybatis通過maven來導入坐標(jar包)

3:編寫Mybatis的核心配置文件

注意:引用類的時候用.,路徑用//

5:編寫Mapper.xml的配置文件(對應的實體類自己寫)

5:加載配置文件

四:Mapper代理開發

原先我們執行sql語句的時候,要指定哪個sql語句,sql語句一多找起來很麻煩

現在用Mapper代理,就可以自動識別里面的sql語句,這樣找起來更方便,就不用手動找了

1:放到同一目錄下

2:映射文件命名空間為接口的全名,id就是這個sql語句的功能,對應的實體類就是你寫的那個類

3:在Mapper接口中定義方法,方法名與映射文件中的id保持一致,返回值為List<text>(根據編寫的sql語句的功能來)

4:進行編碼

過程就是:

1:我們獲取這個接口的class文件,他就在當前目錄下找映射的命名空間與這個接口的全類名一致的映射文件

2:我們調用接口里面的方法,他就到對應的映射文件里面找到方法和id名字對應的sql語句,并封裝對應的實體類,返回一個泛型集合,這個泛型根據實體類

接口的全類名對應映射文件的命名空間

接口里面的方法的名字對應映射文件的id

接口里面的方法的返回值對應映射文件的實體類

代理模式(aop):一個代理對應一個老板

我們去找代理,代理找老板

我們告訴代理要干什么,代理在通知老板要干什么

注意

使用指定包時

MyBatis 通過配置的路徑直接解析 XML,再根據 namespace?找到對應的接口和id 綁定接口方法,與文件名無關

使用package代理時

XML 文件名必須與接口名一致?如接口?TextMapper.java?需對應?TextMapper.xml。若不一致,包掃描無法關聯兩者?

XML 需與接口同級目錄?編譯后,XML 必須位于?target/classes/com/yunlong/mapper/?下

命名空間和 SQL?id?要求不變?仍需匹配接口全限定名和方法名?

五:Mybatis核心配置文件

可以設置一個別名來簡化對應的實體類代碼的簡寫

類型別名簡化

  • 未配置時:需在Mapper XML中寫完整的類路徑(如resultType="com.yunlong.pojo.User"
  • 配置后:只需寫類名如resultType="User"

六:我們先解決數據庫中的字段名和實體類中的成員的名字不一樣導致不能封裝

1:起別名

2:使用sql片段

3:使用resultmap進行映射

把數據庫中的字段名和實體類中的成員的名字不一樣進行映射,id就是實體類的名字(因為用的package進行代理,所以只需要寫實體類的名字就可以了)

column:表的字段名,property:實體類的屬性名

七:使用配置文件完成數據庫的增刪改查

增:

特殊字符處理:

我們是在xml文件里面寫的,所以要符合xml文件的語法,如果遇到特殊字符我們使用以下幾種方法

1:使用轉義字符

2:CDATA區

多條件查詢:

寫參數的幾種方法

1:散裝參數

如果方法中有多個參數,那方法中的參數要使用@param("和sql語句的參數相同"),相當于占位符,這樣他就知道傳入sql語句的參數是哪個了,占位符和sql語句里面參數保持一致

2:使用對象傳入,根據成員的參數依次傳入,要求實體類的屬性名名和sql語句中的參數名保持一致,對應的上就可以

3:使用鍵的對象傳入,鍵的名字和sql語句參數的名字一致

動態條件查詢

1:先判斷傳進來的屬性值是否為空,在拼接sql語句

改進傳入參數的bug

第一種:where后面加1=1

第二種:使用where標簽

單條件的動態條件查詢

從多個條件中選擇一個條件查詢,選擇哪個將拼接哪個

如果用戶一個都沒選,那么將報錯

choose:相當于java里面的switch

when相當于java里面的case

otherwise相當于java里面的default

改進方案:

1:加入一個otherswise如果用戶什么都沒選將會拼接這個

2:加入where標簽也可以,如果用戶什么都沒選將會去掉where

添加:

代理:

映射文件:



測試類里面的代碼

想要返回主鍵的值,在映射文件中增加這個,它就把id的值存入到了實體類的對象當中

修改:

利用set標簽,避免最后一個用戶不修改的話,導致語法錯誤

刪除:

我們要批量刪除,我們要遍歷數組,map會將數組封裝成一個map集合,我們寫array就可以了,鍵是array,值為數組,利用鍵來遍歷,或者使用注解

collection:我們要遍歷的數組

item:遍歷出來的數

separator:分隔符

open和close:開始和結束的標記

參數傳遞:

我們在方法中傳遞的參數,映射文件中參數是如何接收方法中傳遞的參數

單個參數:里面屬性要和映射文件的參數的名稱要保持一致

多個參數:將參數封裝為map集合,鍵的名稱固定的,值就是傳過來的值,

我們通過鍵來獲取值,通過注解我們就可以改變鍵的名稱

我們想要傳過來的參數在映射文件中使用,只有兩種方法

1:使用默認的map的鍵

2:使用注解來改變map的鍵,來使用注解的形式

我們在映射文件的sql語句中我們要使用map的鍵,它會自動來獲取對應的值

八:使用注解完成數據庫的增刪改查

使用注解開發就不需要寫映射文件了,直接在代理的方法上面寫注解就可以了

他就不找映射文件了,而是找方法上面對應的注解

怎么寫:

一個核心配置文件代表多個數據庫,可以切換

一個映射文件,代理,實體類代表數據庫中的一張表

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

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

相關文章

化學方程式配平免費API接口教程

接口簡介&#xff1a; 根據反應物和生成物配平化學方程式。 請求地址&#xff1a; https://cn.apihz.cn/api/other/hxfcs.php 請求方式&#xff1a; POST或GET。 請求參數&#xff1a; 【名稱】【參數】【必填】【說明】 【用戶ID】【id】【是】【用戶中心的數字ID&#xff…

Spring學習筆記:Spring的基于注解的XML的詳細配置

按照劉Java的順序&#xff0c;應該是從基于XML的DI開始接著上面的關于IoC容器裝配。主要介紹學習Spring的XML基于注解的詳細配置。 第一步是搭建一個Spring的基礎工程&#xff08;maven管理&#xff09;&#xff0c;通過IoC機制獲取IoC容器的對象。 創建maven工程并在pom文件…

(四)動手實現多層感知機:深度學習中的非線性建模實戰

1 多層感知機&#xff08;MLP&#xff09; 多層感知機&#xff08;Multilayer Perceptron, MLP&#xff09;是一種前饋神經網絡&#xff0c;包含一個或多個隱藏層。它能夠學習數據中的非線性關系&#xff0c;廣泛應用于分類和回歸任務。MLP的每個神經元對輸入信號進行加權求和…

第十三篇:MySQL 運維自動化與可觀測性建設實踐指南

本篇重點介紹 MySQL 運維自動化的關鍵工具與流程&#xff0c;深入實踐如何構建高效可觀測體系&#xff0c;實現數據庫系統的持續穩定運行與故障快速響應。 一、為什么需要 MySQL 運維自動化與可觀測性&#xff1f; 運維挑戰&#xff1a; 手動備份容易遺漏或失敗&#xff1b; …

蜜獾算法(HBA,Honey Badger Algorithm)

2021年由Hashim等人提出&#xff08;論文&#xff1a;Honey Badger Algorithm: A New Metaheuristic Algorithm for Solving Optimization Problems&#xff09;。模擬蜜獾在自然界中的智能捕食行為&#xff0c;屬于群體智能優化算法&#xff08;與粒子群PSO、遺傳算法GA同屬一…

Duix.HeyGem:以“離線+開源”重構數字人創作生態

在AI技術快速演進的今天,虛擬數字人正從高成本、高門檻的專業領域走向大眾化應用。Duix.HeyGem 數字人項目正是這一趨勢下的杰出代表。該項目由一支擁有七年AI研發經驗的團隊打造,通過放棄傳統3D建模路徑,轉向真人視頻驅動的AI訓練模型,成功實現了低成本、高質量、本地化的…

HTTP常見的請求方法、響應狀態碼、接口規范介紹

HTTP&#xff08;Hypertext Transfer Protocol&#xff09;是Web通信的基礎協議&#xff0c;用于客戶端和服務器之間的請求和響應。本文將詳細介紹HTTP常見的請求方法、響應狀態碼以及接口規范&#xff0c;幫助開發者更好地理解和使用HTTP協議。 一、HTTP請求方法 HTTP請求方…

基于Matlab實現LDA算法

線性判別分析&#xff08;Linear Discriminant Analysis, LDA&#xff09;是一種經典的統計方法&#xff0c;常用于特征降維和分類問題。在機器學習領域&#xff0c; 一、LDA基本原理 LDA的目標是尋找一個投影空間&#xff0c;使得類間距離最大化&#xff0c;同時保持類內距離…

matlab基于GUI實現水果識別

基于GUI實現水果識別系統&#xff0c;限一個圖片內存在一種水果 圖像處理是一種利用計算機分析圖像以達到預期結果的技術。圖像處理一般指數字圖像處理&#xff0c;而數字圖像指由工業相機、攝像機、掃描儀等設備捕捉到的二維數組&#xff0c;數組中的元素稱為像素&#xff0c…

XML 編碼:結構化數據的基石

XML 編碼:結構化數據的基石 引言 XML(可擴展標記語言)作為互聯網上廣泛使用的數據交換格式,已經成為結構化數據存儲和傳輸的重要工具。本文旨在深入探討XML編碼的原理、應用場景以及編碼規范,幫助讀者更好地理解和運用XML。 XML編碼概述 1. XML的起源 XML誕生于1998年…

虛擬機無法開啟-關掉虛擬化

這個問題我之前解決過&#xff0c;沒做筆記&#xff0c;這次記錄下&#xff0c;最常見都上開啟bois的cpu虛擬化。 其次是啟動或關閉功能頁面也需要選擇&#xff0c;再就是和wsl都沖突問題&#xff0c;就是今天這個問題 您的主機不滿足在啟用 Hyper-V 或 Device/Credential Gua…

Python數據可視化科技圖表繪制系列教程(二)

目錄 表格風格圖 使用Seaborn函數繪圖 設置圖表風格 設置顏色主題 圖表分面 繪圖過程 使用繪圖函數繪圖 定義主題 分面1 分面2 【聲明】&#xff1a;未經版權人書面許可&#xff0c;任何單位或個人不得以任何形式復制、發行、出租、改編、匯編、傳播、展示或利用本博…

LeetCode算法題 (搜索二維矩陣)Day18!!!C/C++

https://leetcode.cn/problems/search-a-2d-matrix/description/ 一、題目分析 給你一個滿足下述兩條屬性的 m x n 整數矩陣&#xff1a; 每行中的整數從左到右按非嚴格遞增順序排列。每行的第一個整數大于前一行的最后一個整數。 給你一個整數 target &#xff0c;如果 ta…

獵板硬金鍍層厚度:新能源汽車高壓系統的可靠性基石

在新能源汽車的電池管理系統&#xff08;BMS&#xff09;和電機控制器中&#xff0c;硬金鍍層厚度直接關系到高壓環境下的電氣穩定性與使用壽命。獵板針對車載場景開發的耐電遷移方案&#xff08;金層 2.5μm&#xff0c;鎳層 8μm&#xff09;&#xff0c;經 150℃/85% RH 高壓…

亞馬遜站內信規則2025年重大更新:避坑指南與合規策略

亞馬遜近期對Buyer-Seller Messaging&#xff08;買家-賣家站內信&#xff09;規則進行了顯著收緊&#xff0c;明確將一些曾經的“灰色操作”列為違規。違規操作輕則收到警告&#xff0c;重則導致賬戶暫停或績效受限。本文為您全面解析本次規則更新的核心要點、背后邏輯&#x…

WPF可拖拽ListView

1.控件描述 WPF實現一個ListView控件Item子項可刪除也可拖拽排序&#xff0c;效果如下圖所示 2.實現代碼 配合 WrapPanel 實現水平自動換行&#xff0c;并開啟拖拽 <ListViewx:Name"listView"Grid.Row"1"Width"300"AllowDrop"True&…

相機--雙目立體相機

教程 鏈接1 教程匯總 立體匹配算法基礎概念 視頻講解攝像機標定和雙目立體原理 兩個鏡頭。 雙目相機也叫立體相機--Stereo Camera&#xff0c;屬于深度相機。 作用 1&#xff0c;獲取圖像特征&#xff1b; 2&#xff0c;獲取圖像深度信息&#xff1b; 原理 原理和標定 …

Unity3D仿星露谷物語開發59之定制角色襯衫

1、目標 自定義角色襯衫、褲子、手臂顏色。 2、概念 在Assets -> Sprites -> Output Textures下&#xff0c;Customised_farmer為目前角色所用的精靈表。 如果上面是輸出紋理&#xff0c;那么輸入紋理是什么呢&#xff1f;它位于Assets/Sprites/Sprite Textures/Chara…

【HarmonyOS 5】游戲開發教程

一、開發環境搭建 ?工具配置? 安裝DevEco Studio 5.1&#xff0c;啟用CodeGenie AI助手&#xff08;Settings → Tools → AI Assistant&#xff09;配置游戲模板&#xff1a;選擇"Game"類型項目&#xff0c;勾選手機/平板/折疊屏多設備支持 二、游戲引擎核心架構…

深度探索:如何用DeepSeek重構你的工作流

前言:AI時代的工作革命 在人工智能浪潮席卷的今天,DeepSeek作為國產大模型的代表之一,正以其強大的自然語言處理能力、代碼生成能力和多模態交互特性,重新定義著人類的工作方式。根據IDC報告顯示,2024年企業級AI應用市場規模已突破800億美元,其中智能辦公場景占比達32%,…