【Spring】MyBatis的操作數據庫

目錄

一,準備工作

1.1 創建工程

1.2 準備數據?

1.3 數據庫連接字符串

1.4 創建持久層接口UserInfoMapper

?1.5 單元測試

二,注解的基礎操作

2.1 打印日志

2.2 參數傳遞?

2.3 增(Insert)?

2.4 刪(Delete)?

2.5 改(Update)

?編輯2.6 查(Select)?

三,XML的基礎操作

3.1 配置數據庫

3.2 指明xml路徑

3.3??寫xml的實現?

3.4 增(Insert)

?3.5 刪(Delete)

3.6 改(Update)?

3.7 查(Select)?


一,準備工作

1.1 創建工程

創建springboot工程,導入mybatis的起步依賴,mysql的驅動包。

然后在pom。xml文件中導入Mybits依賴和MySQL驅動依賴?

Mybits依賴包:

<dependency>
????????<groupId>org.mybatis.spring.boot</groupId>
????????<artifactId>mybatis-spring-boot-starter</artifactId>
????????<version>2.3.1</version>
</dependency>

MySQL驅動包:

<dependency>
????????<groupId>com.mysql</groupId>
????????<artifactId>mysql-connector-j</artifactId>
????????<scope>runtime</scope>
</dependency>

1.2 準備數據?

導入MySQL的User用戶表

-- 創建數據庫
DROP DATABASE IF EXISTS mybatis_test;CREATE DATABASE mybatis_test DEFAULT CHARACTER SET utf8mb4;-- 使?數據數據
USE mybatis_test;-- 創建表[??表]
DROP TABLE IF EXISTS userinfo;
CREATE TABLE `userinfo` (`id` INT ( 11 ) NOT NULL AUTO_INCREMENT,`username` VARCHAR ( 127 ) NOT NULL,`password` VARCHAR ( 127 ) NOT NULL,`age` TINYINT ( 4 ) NOT NULL,`gender` TINYINT ( 4 ) DEFAULT '0' COMMENT '1-男 2-? 0-默認',`phone` VARCHAR ( 15 ) DEFAULT NULL,`delete_flag` TINYINT ( 4 ) DEFAULT 0 COMMENT '0-正常, 1-刪除',`create_time` DATETIME DEFAULT now(),`update_time` DATETIME DEFAULT now(),PRIMARY KEY ( `id` )
) ENGINE = INNODB DEFAULT CHARSET = utf8mb4;-- 添加??信息
INSERT INTO mybatis_test.userinfo ( username, `password`, age, gender, phone )
VALUES ( 'admin', 'admin', 18, 1, '18612340001' );
INSERT INTO mybatis_test.userinfo ( username, `password`, age, gender, phone )
VALUES ( 'zhangsan', 'zhangsan', 18, 1, '18612340002' );
INSERT INTO mybatis_test.userinfo ( username, `password`, age, gender, phone )
VALUES ( 'lisi', 'lisi', 18, 1, '18612340003' );
INSERT INTO mybatis_test.userinfo ( username, `password`, age, gender, phone )
VALUES ( 'wangwu', 'wangwu', 18, 1, '18612340004' );

創建userInfo實體類:

?

1.3 數據庫連接字符串

Mybatis要連接數據庫,需要數據庫相關參數配置

①Mysql驅動類

②登錄名

③密碼

④數據庫連接字符串

application.yml文件和application的配置內容如下:

?# yml數據庫連接配置
spring:
????????datasource:
????????????????url: jdbc:mysql://127.0.0.1:3306/mybatis_test?characterEncoding=utf8&useSSL=
????????????????username: root
????????????????password: 123456?

? ? ? ? ? ? ? ? #密碼修改為自己數據庫的密碼!!!
????????????????driver-class-name: com.mysql.cj.jdbc.Driverperties

#properties?

#驅動類名稱
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
#數據庫連接的url
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/mybatis_test?characterEncoding
#連接數據庫的??名
spring.datasource.username=root
#連接數據庫的密碼
spring.datasource.password=123456

1.4 創建持久層接口UserInfoMapper

@Mapper注解:表示Mybatis中的Mapper接口,程序運行時,框架會自動生成接口的實現類對象,并交給Spring的IOC容器管理。

@Select注解:代表的就是selsct查詢,也就是注解對應方法的具體實現內容

?1.5 單元測試

在創建出來的SPringleBoot工程中,test目錄下已經創建好了測試類,可以直接使用這個測試類來進行測試。

idea自動生成測試類,選擇要測試的方法,書寫測試代碼?

二,注解的基礎操作

2.1 打印日志

yml文件中配置

結果為:?

2.2 參數傳遞?

正常的查找語句是這樣的

這樣的話就只能查找id=1的數據,所以id需要寫成動態的數值

這樣就可以了。

也可以通過@Param,設置參數的別名,如果使用@Param設置別名,#{}里面的屬性必須和@Param設置的一樣。

2.3 增(Insert)?

SQL語句

把SQL中的常量替換為動態的參數

使用Mapper接口:

返回主鍵:insert默認返回的是受影響的行數,數據插入后需要后續的一系列操作,則需要獲取到新插入數據的id,如果想拿到自增id需要在Mapper接口方法上添加一個Option的注解。

(useGeneratedKeys:它將Mybatis使用的JDBC的getGeneraterKeys方法來取出由數據庫內部生成的主鍵【比如像Mysql這種關系型數據庫管理系統的自動遞增字段】默認值為false)

(keyPropeerty:它能夠唯一識別對象的屬性,MyBatis會使用getGeneraterKets的返回值或者insert語句的selectKey子元素設置它的值,默認值:未設置)

?測試數據:

2.4 刪(Delete)?

SQL語句

Mapper接口:

2.5 改(Update)

SQL語句:

Mapper接口:

2.6 查(Select)?

使用XML的方式進行查詢,存在數據封裝的問題

查詢結果為:

Mybatis會自動的根據數據庫字段名和Java對象的屬性名,進行映射,如果名稱一樣,就進行賦值。

有如下解決方式:

①:對字段進行重命名,結果映射方法頁

重命名前:

重命名后:?

②: 使用Results注解

結果的復用:

③:駝峰命名(推薦)

三,XML的基礎操作

MyBatisXML的實現方式需要以下幾步

3.1 配置數據庫

3.2 指明xml路徑

3.3??寫xml的實現?

?

selectAll()與下面id名稱一致,返回的是對象或者list,此處定義的都是返回的數據的類型

?常見一些錯誤:①xml和接口定義的方法名稱不一致? ②mapper的路徑配置和xml的路徑不一樣

3.4 增(Insert)

?方法的聲明:

方法的實現:

拿返回值(獲取自增ID):

?

?3.5 刪(Delete)

方法的聲明:

生成測試用例

3.6 改(Update)?

方法的聲明:

方法的實現:

3.7 查(Select)?

結果映射也是三種方式:

①sql字段別名(同上)

②自動轉駝峰(同上)

③定義Result

?

板書:

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

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

相關文章

插件預熱 | 且看安全小白如何輕松利用Goby插件快速上分

001 前言 各位師傅們好&#xff0c;首先強調一遍我可沒做壞事&#xff0c;我只是想學技術&#xff0c;我有什么壞心思呢 回到正題&#xff0c;作為一個初學者&#xff0c;我想和大家分享一下我是如何利用 Goby 進行刷分的經歷。大家都知道&#xff0c;剛開始學習的時候&…

python每日一題——4移動0

題目 給定一個數組 nums&#xff0c;編寫一個函數將所有 0 移動到數組的末尾&#xff0c;同時保持非零元素的相對順序。 請注意 &#xff0c;必須在不復制數組的情況下原地對數組進行操作。 示例 1: 輸入: nums [0,1,0,3,12] 輸出: [1,3,12,0,0] 示例 2: 輸入: nums [0]…

Go 語言中的 Switch 語句詳解

switch語句 使用switch語句來選擇要執行的多個代碼塊中的一個。 在Go中的switch語句類似于C、C、Java、JavaScript和PHP中的switch語句。不同之處在于它只執行匹配的case&#xff0c;因此不需要使用break語句。 單一case的switch語法 switch 表達式 { case x:// 代碼塊 cas…

web前端開發基礎------外邊距折疊現象

引言 在設置樣式時&#xff0c;需要遵循先整體再細節&#xff0c;先通用樣式再特殊樣式的順序進行設置 一&#xff0c;什么是外邊距折疊現象呢&#xff1f; 外邊距折疊 定義&#xff1a; 外邊距折疊是指相鄰的兩個或者多個外邊距&#xff08;margin&#xff09;在垂直方向會合并…

Python入門學習篇(二)——算術運算符

1 算術運算符 1.1 分類 類型含義示例注意事項加號12?3“12”“3"?"123”數值之間,是加法運算(True為1,False為0)字符串之間,是進行拼接數值和字符串之間是不可以使用加法運算的,會報錯-減號1-2?-1*乘號2*3?6/除法2/1?2.0除法的結果永遠為小數%取余10%2?0//取…

SAP 預付款清賬程序

預付款批量清賬程序&#xff0c;也是來自于網上&#xff0c;稍微改了一下。依據付款參考清賬。 原文參考&#xff1a;【ABAP】供應商、客戶的特殊總賬和非特殊總賬清賬_sap f-44 bapi-CSDN博客 &---------------------------------------------------------------------*…

老生常談 - 從輸入URL到頁面加載的過程(詳細版)

從輸入URL到頁面加載的過程 之前一直都是直接看一下總結的八股文章&#xff0c;對于實際的整個鏈路并不是特別熟悉&#xff0c;這次花了一天多的時間看了很多資料&#xff0c;對于整個頁面加載的流程有了自己的理解&#xff0c;從前端開始訪問的瀏覽器多線程、緩存等問題&#…

5-11一個球從100米自由落下

#include<stdio.h> int main(){double down100;double back down/2;int n;//次數for(n2;n<10;n){downdownback*2;backback/2; }printf("第10次落地經過%f米\n",down);printf("第10次反彈%f米\n",back);return 0;}

href和src的區別

1、請求資源類型不同 &#xff08;1&#xff09; href是Hypertext Reference的縮寫&#xff0c;表示超文本引用。用來建立當前元素和文檔之間的鏈接。常用的有&#xff1a;link、a。 &#xff08;2&#xff09;在請求 src 資源時會將其指向的資源下載并應用到文檔中&#xff0…

分布式事務seata的AT模式介紹

分布式事務seata的AT模式介紹 seata是阿里開源的一款分布式事務解決方案&#xff0c;致力于提供高性能和簡單易用的分布式事務服務。Seata 將為用戶提供了 AT、TCC、SAGA 和 XA 事務模式&#xff0c;本文主要介紹AT模式的使用。 seata安裝 下載seata服務&#xff0c;官方地址…

測試數據不會造?可以用這個工具Faker

在測試過程中&#xff0c;大家應該都遇到過各種各樣的數據構造問題。e.g. 構造一批通訊錄、構造一批用戶三要素(姓名手機號身份證)、構造一批銀行卡數據…… 這時候&#xff0c;測試數據大多數可能是這樣的: 張三, 130 0000 0001 李四, 130 0000 0002 王五, 130 0000 0003 …

【C/PTA —— 11.函數2(課外實踐)】

C/PTA —— 11.函數2&#xff08;課外實踐&#xff09; 一.函數題6-1 計算A[n]1/(1 A[n-1])6-2 遞歸實現順序輸出整數6-3 自然數的位數(遞歸版)6-4 分治法求解金塊問題6-5 漢諾塔6-6 重復顯示字符(遞歸版)6-7 顯示平行四邊形(右)(遞歸版) 二.編程題7-2 N階樓梯上樓問題 一.函數…

python實現存款日利息計算器(窗口界面形式)

輸入存款金額&#xff0c;7日年化收益率&#xff0c;輸出每日利息 完整源碼如下&#xff1a; import tkinter as tk from tkinter import messageboxdef calculate_interest():deposit float(entry_deposit.get())interest_rate float(entry_interest_rate.get())daily_int…

【數據結構】二叉排序樹(c風格、結合c++引用)

目錄 1 基本概念 結構體定義 各種接口 2 二叉排序樹的構建和中序遍歷 遞歸版單次插入 非遞歸版單次插入 3 二叉排序樹的查找 非遞歸版本 遞歸版本 4 二叉排序樹的刪除&#xff08;難點&#xff09; 1 基本概念 普通二叉排序樹是一種簡單的數據結構&#xff0c;節點的值…

戲說二十三種設計模式_用故事的方式就是讓你一定能懂

創建型模式 1、FACTORY—追MM少不了請吃飯了&#xff0c;麥當勞的雞翅和肯德基的雞翅都是MM愛吃的東西&#xff0c;雖然口味有所不同&#xff0c;但不管你帶MM去麥當勞或肯德基&#xff0c;只管向服務員說“來四個雞翅”就行了。麥當勞和肯德基就是生產雞翅的Factory 工廠模式&…

Cortex-M與RISC-V區別

環境 Cortex-M以STM32H750為代表&#xff0c;RISC-V以芯來為代表 RTOS版本為RT-Thread 4.1.1 寄存器 RISC-V 常用匯編 RISC-V 關于STORE x4, 4(sp)這種寄存器前面帶數字的寫法&#xff0c;其意思為將x4的值存入sp4這個地址&#xff0c;即前面的數字表示偏移的意思 反之LOA…

【LM358AD運放方波振蕩器可控輸出幅值】2022-2-25

緣由仿真如何縮小方波振蕩電路方波幅值?-有問必答-CSDN問答

使用Pytorch從零開始構建LSTM

長短期記憶&#xff08;LSTM&#xff09;網絡已被廣泛用于解決各種順序任務。讓我們了解這些網絡如何工作以及如何實施它們。 就像我們一樣&#xff0c;循環神經網絡&#xff08;RNN&#xff09;也可能很健忘。這種與短期記憶的斗爭導致 RNN 在大多數任務中失去有效性。不過&a…

發送一個網絡數據包的過程解析

在 ip_queue_xmit 中&#xff0c;也即 IP 層的發送函數里面&#xff0c;有三部分邏輯。第一部分&#xff0c;選取路由&#xff0c;也即我要發送這個包應該從哪個網卡出去。 這件事情主要由 ip_route_output_ports 函數完成。接下來的調用鏈為&#xff1a;ip_route_output_port…

改進YOLOv8 | YOLOv5系列:RFAConv續作,即插即用具有任意采樣形狀和任意數目參數的卷積核AKCOnv

RFAConv續作,構建具有任意采樣形狀的卷積AKConv 一、論文yolov5加入的方式論文 源代碼 一、論文 基于卷積運算的神經網絡在深度學習領域取得了顯著的成果,但標準卷積運算存在兩個固有缺陷:一方面,卷積運算被限制在一個局部窗口,不能從其他位置捕獲信息,并且其采樣形狀是…