springboot使用mybatisPlus進行數據庫增刪改查

springboot使用mybatisPlus進行數據庫增刪改查

提示:幫幫志會陸續更新非常多的IT技術知識,希望分享的內容對您有用。本章分享的是springboot的使用。前后每一小節的內容是存在的有:學習and理解的關聯性。【幫幫志系列文章】:每個知識點,都是寫出代碼和運行結果且前后關聯上的去分析和說明(能大量節約您的時間)。

所有文章都*不會*直接把代碼放那里,讓您自己去看去理解。我希望我的內容對您有用而努力~


文章目錄

  • springboot使用mybatisPlus進行數據庫增刪改查
  • 前言
  • 一、添加項目依賴
  • 二、編寫各個配置
  • 三、實現增刪改查
    • 查詢
    • 添加
    • 修改
    • 刪除
  • 總結


本文章是系列文章,技術棧內容為:【springboot+vue】【前后分離】
【詳細圖文,實操步驟分享,節約時間版】。最終完成一個商業化項目。內容有:
springboot知識
mybatisPlus知識
vue知識
node.js知識

本小節的內容是
mybatisPlus篇章 之 : 04.使用mybatisPlus進行數據庫增刪改查

本小節有兩個附小節,分別是:
mybatisPlus進行多表聯動查詢(正在上傳ing)

mybatisPlus進行分頁查詢(正在上傳ing)



如還沒有創建springboot可查閱:
【2025年】基于電腦的jdk1.8通過idea創建springboot2.x版本(非常簡潔快速)
【上榜文章,一文搞定】現在springboot是3.x以上版本,jdk版本至少要求17.但是很多時候我們電腦是jdk1.8(求穩定性和安全性)。文本分享本機電腦1.8的jdk。idea如何非常簡潔快速的創建springboot
文章里面也有 為什么只能是jdk17起和地址指定為阿里云報錯的解決辦法

本小節為第四小節前面已經分享了通過springboot去關聯操作網頁數據((RESTful風格和swagger的使用)),加上本小節springboot就可以同時關聯網頁和操作數據庫
RESTful風格是什么,如何去設計


前言

在數據庫中創建一個表
當前使用的是mysql數據庫

創建一個名為user的表,分別有三個字段(uid uname uage)uid為主鍵且自增
在這里插入圖片描述
在手動添加一些模擬的數據
在這里插入圖片描述


一、添加項目依賴

在pom.xml文件的dependencies標簽里面 添加新的依賴標簽。

<!--springboot2--><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.4.2</version></dependency><!--MySQL驅動--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><scope>5.1.47</scope></dependency>

左上角點擊maven 點擊刷新。第一次使用這個依賴的話,需要等待一會它下載。
在這里插入圖片描述


二、編寫各個配置

根據數據庫創建實體類

public class User {private int uid;private String uname;private int uage;... 構造函數 和 get set方法  方便測試看數據再來一個:toString()
}

在application.properties配置里面添加:

#注意需要修改為自己的數據庫名稱,我的是test。問號后面是時區的設置,防止報錯spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/test?serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=123456
#密碼修改為自己的#mybatis-plus的日志配置,可以在控制臺看到操作數據庫的日志
mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl

編寫dao/mapper 包
就是操作數據庫的包 有些公司為dao層 有些公司根據mybatis映射寫成了mapper
創建一個接口,和mybatis一樣。面向接口映射動態代理

import com.baomidou.mybatisplus.core.mapper.BaseMapper;@Mapper//添加@Mapper注解(重要)
public interface UserDao extends BaseMapper<User> {//繼承父接口,指定實體類  類型為User//繼承了BaseMapper,里面有很多很多增刪改查的方法。所以:dao層就寫完了!!!!!//您也可以自己寫一個方法接口,根據實際的業務場景,來補充BaseMapper里面沒有的//就像這樣(這個是案例,其實查詢的方法。BaseMapper有很多):@Select("select * from user")public List<User> findAll();//修改@update  刪除@delete  添加@insert@update(update user set uname=#{uname} where uid = #{uid})//這個父類也有的public int updateNameById(User user);  //sql語句在注解后面,語法和mybatis一模一樣,如# 和 $  limit  order 。。。。等等
}

編寫service/controller 包

	@Resourceprivate UserDao userDao;@GetMapping("/findAll")public List<User> findAll(){//這個selectList是BaseMapper自帶的//selectList(user) 也可以傳一個帶了一些數據的User,它能拼接查詢條件List<User> list = userDao.selectList(null); return list;//userDao是子類。里面有很多父類的方法//大家可以 : userDao.     查看提示,很多很多增刪改查自帶的}

在啟動類里面添加注解:@MapperScan(“com.bbz.bbzspring.dao”)
指向您的dao/mapper層 的 接口包名

@SpringBootApplication
@MapperScan("com.bbz.bbzspring.dao")
public class BbzspringApplication {...
}

啟動項目,運行。輸入對應的GetMapping(“/findAll”)地址:
我的controller類是@RestController注解,返回數據的(上幾個小節有步驟, 延續下來的)
在這里插入圖片描述

總結
添加依賴
完善工程結構(實體類 和 service 和 controller)

dao/mapper層的接口
繼承
mybatisplus.core.mapper.BaseMapper接口
就弄完了。BaseMapper里面有很多自帶的增刪改查方法

一般公司:還是需要自己寫很多接口方法,因為級聯操作 , 多表的映射等等,它還沒有那么智能。還是要自己來寫,在sql語句里面配置多表之間的連接條件啥的


三、實現增刪改查

我的dao層是空的,現在用的全是BaseMapper自帶的方法。dao層代碼這里省略
它就一句:public interface UserDao extends BaseMapper<User>
當然還有一個@Mapper的注解在接口類上面

查詢

直接使用主鍵查詢,則需要告訴它那個成員變量是主鍵
在實體類里面,給主鍵添加一個注解

public class User {@TableIdprivate int uid;
	@GetMapping("/getUser")public User getUser(){User user = userDao.selectById(1);return user;}

在這里插入圖片描述

添加

	@PostMapping("/addUser")//post提交public int getUser(User user){int number = userDao.insert(user);return number;}

在網頁測試工具里面,注意修改提交方式為post,地址對應注解的值。添加了參數,id沒有添加,因為是自動遞增
apiPost安裝及使用
在這里插入圖片描述
spring框架:您直接發送前端的數據 對應 實體類成員變量的單詞,自動放入數據
頁面的uname 對應 實體類.uname
頁面的uage 對應 實體類.uage
后端方法參數直接就 對應封好了 每一個傳遞過來的數據值
public int getUser(User user) 就是這個user
它自動里面有數據了,方法里面直接用就可以了
所以:為什么對應單詞:如果同時有很多個字符串,單詞又不對應,那么哪個放哪個呢

刷新數據庫。
在這里插入圖片描述

為什么要修改注解和用工具來生成不同的提交方式,哦,沒事的~
您跳著看了吧~ 摳鼻/笑哭.gif手動表情
RESTful風格是什么

修改

	@PutMapping("/updateUser")  //注解是put注解了哈public int updateUser(User user){int number = userDao.updateById(user);return number;}

改了uname的一個名字,為put提交,修改了地址對應注解。
因為是修改,添加了一個參數為uid
在這里插入圖片描述
刷新數據庫:
在這里插入圖片描述

刪除

	@DeleteMapping("/deleteUser")public int deleteUser(User user){int number = userDao.deleteById(user.getUid());return number;}

在這里插入圖片描述


總結

說明一下:整個這個系列實現前后分離的springboot+vue項目。序號文章一共也就10幾篇,只有核心圖文重點操作步驟來實現這個目標(基本上您邊看邊寫:一個小時或者一上午就能跟著一起手搓一個前后分離項目,然后您可以自行添加功能和內容在您項目里面)

其他擴展細節知識點,本系列省略了(或者有鏈接)如:
mybatisPlus的特點,內部原理,管它現在用不用的上,內容全部丟進來。可能會很多很多了。當前 系列: 我們的目的是快速手搓前后分離項目 其他詳細版的,請查閱幫幫志其他的文章,是有的

(會陸續更新非常多的IT技術知識及泛IT的電商知識,可以點個關注,共同交流。?( ′・?・` )比心)
(也歡迎評論,提問。 我會依次回答~)

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

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

相關文章

基于SpringBoot的校園周邊美食探索及分享平臺的設計與實現

資源詳情&#xff1a; 私信我或點擊鏈接獲取&#xff1a; 基于SpringBoot的校園周邊美食探索及分享平臺的設計與實現資源-CSDN文庫 摘要 美食一直是與人們日常生活息息相關的產業。傳統的電話訂餐或者到店消費已經不能適應市場發展的需求。隨著網絡的迅速崛起&#xff0c;互聯…

到達最后一個房間的最少時間II 類似棋盤轉移規律查找

文章目錄 3342.到達最后一個房間的最少時間II 思路分析&#xff1a;最短路徑問題&#xff0c;當然&#xff0c;由于不同的格子之間的移動的代價不統一,所以這個最短路徑需要使用Dijkstra算法進行求解&#xff0c;對于直接使用Dijkstra算法模版的題目&#xff0c;大家可以先去做…

基于開源AI大模型AI智能名片S2B2C商城小程序源碼的私域流量穩定性構建研究

摘要&#xff1a;在私域流量時代&#xff0c;傳統實體零售的"時間積累"邏輯被直播電商等新業態顛覆。完美日記等新銳品牌通過構建私域流量池&#xff0c;實現了從0到1的指數級增長&#xff0c;而傳統品牌卻陷入"流量焦慮"。本文提出以開源AI大模型AI智能名…

做 iOS 調試時,我嘗試了 5 款抓包工具

日常做開發的人&#xff0c;特別是和客戶端接口打交道的同學&#xff0c;應該對“抓包”這件事不陌生。 調試登錄流程、分析接口格式、排查錯誤返回、分析網絡性能、甚至研究第三方 App 的數據通信……說到底&#xff0c;都繞不開“抓 HTTPS 包”這一步。 而這一步&#xff0…

Algolia - Docsearch的申請配置安裝【以踩坑解決版】

&#x1f468;?&#x1f393;博主簡介 &#x1f3c5;CSDN博客專家 ??&#x1f3c5;云計算領域優質創作者 ??&#x1f3c5;華為云開發者社區專家博主 ??&#x1f3c5;阿里云開發者社區專家博主 &#x1f48a;交流社區&#xff1a;運維交流社區 歡迎大家的加入&#xff01…

nginx 配置后端健康檢查模塊

nginx自帶的針對后端節點健康檢查的功能比較簡單,通過默認自帶的ngx_http_proxy_module 模塊和ngx_http_upstream_module模塊中的參數來完成,當后端節點出現故障時,自動切換到健康節點來提供訪問。但是nginx不能事先知道后端節點狀態是否健康,后端即使有不健康節點,負載均…

平板收銀系統、國產系統,鴻蒙系統,小鍵盤的封裝與應用—仙盟創夢IDE

數字小鍵盤封裝 數組小鍵盤封裝是指將與數組小鍵盤相關的功能、操作、數據等進行整合&#xff0c;形成一個獨立的、可復用的模塊。封裝數組小鍵盤具有以下幾方面重要意義&#xff1a; 提高代碼可維護性 降低復雜度&#xff1a;數組小鍵盤在實際應用中&#xff0c;可能涉及到…

網工實驗——OSPF配置

網絡拓撲圖 配置 1.為每個路由器配置接口&#xff08;略&#xff09;&#xff08;詳細見RIP實驗&#xff09; 2.配置OSPF AR1 [AR1]ospf [AR1-ospf-1]area 1 [AR1-ospf-1-area-0.0.0.1]network 172.16.1.1 0.0.0.0 #精確配置網絡&#xff0c;也可以像下面那條命令那樣配置 …

Kubernetes client-go 客戶端類型與初始化指南

Kubernetes client-go 客戶端類型與初始化指南 在 Kubernetes 的 client-go 庫中&#xff0c;存在多種客戶端用于與 API 服務器交互。以下介紹主要客戶端類型&#xff0c;包括用途、初始化方式及 Demo。 1. RESTClient 用途 RESTClient 是底層 REST 客戶端&#xff0c;直接…

java加強 -泛型

概念 定義類、接口、方法時&#xff0c;同時聲明了一個或多個類型變量&#xff08;如<E>&#xff09;&#xff0c;稱為泛型類、泛型接口、泛型方法、它們統稱為泛型。 語法 public class ArrayList<E>{} E可以接收不同類型的數據&#xff0c;可以是字符串&…

C++ 項目 -- 高并發內存池

目錄 項目介紹 內存池概念 池化技術 內存池 內存池主要解決的問題 malloc 定長內存池 申請內存 釋放內存 整體框架設計 thread cache 申請內存 釋放內存 central cache 申請內存 釋放內存 page cache 申請內存 釋放內存 大塊內存申請實現 定長內存…

高效C/C++之九:Coverity修復問題:關于數組操作 和 內存操作

【關注我&#xff0c;后續持續新增專題博文&#xff0c;謝謝&#xff01;&#xff01;&#xff01;】 上一篇我們講了&#xff1a; 這一篇我們開始講&#xff1a; 高效C/C之九&#xff1a;Coverity修復問題&#xff1a;關于數組操作 和 內存操作 目錄 【關注我&#xff0c;后…

vfrom表單設計器使用事件機制控制字段顯示隱藏

1. 使用表單設計器進行debug調試 依據 vform3.0開發者文檔 https://www.ganweicloud.com/docs/6.1.0/pages/d3e6d9/ 對switch組件設置事件邏輯 調試中

iPhone 和 Android 在日期格式方面的區別

整篇文章由iPhone 和 Android 在日期格式方面有所不同引起,大致介紹了,兩種時間標準,以及在 JavaScript 下的格式轉換方法。 Unix 時間戳是從1970年1月1日(UTC/GMT的午夜)開始所經過的秒數,不考慮閏秒。 iPhone 和 Android 在日期格式方面有所不同。其中,iPhone(iOS)使…

985高校查重率“隱性閾值”:低于5%可能被重點審查!

你是不是也以為&#xff1a; “查重率越低越好&#xff0c;最好壓到1%、0%&#xff0c;導師看了都感動哭&#x1f979;” 但是你不知道的是——在985/211等重點高校&#xff0c;查重率太低反而可能引起導師和學術辦公室的“特別關注”&#xff01; 今天就來扒一扒這個查重圈“…

【NLP】33. Pinecone + OpenAI :構建自定義語義搜索系統

Pinecone OpenAI 中文教學教程&#xff1a;構建自定義語義搜索系統 一、背景介紹 當下 AI 問答系統、矩陣檢索、短文本分類等場景中&#xff0c;都需要很好地實現 “根據輸入進行相似給點搜索”。這種算法基礎稱為 “向量搜索”&#xff0c;它的核心是將文本轉換為向量后&am…

【Mybatis-plus常用語法】

MyBatis-Plus 是 MyBatis 的增強工具&#xff0c;提供了很多便捷的功能來簡化開發。以下是一些 MyBatis-Plus 的常見語法&#xff1a; 實體類注解&#xff1a;使用 TableName 注解來指定實體類和數據庫表的映射關系。 TableName("user") public class User {privat…

Logback官方文檔翻譯章節目錄

Logback官方文檔翻譯章節目錄 第一章 Logback簡介 第二章 Logback的架構&#xff08;一&#xff09; Logback的架構&#xff08;二&#xff09; Logback的架構&#xff08;三&#xff09; 持續更新中…

Python變量作用域

變量作用域是Python編程中非常重要的基礎概念&#xff0c;理解它可以幫助你避免很多常見的錯誤。本文將用簡單易懂的方式&#xff0c;帶你全面掌握Python變量作用域的所有細節。 一、什么是變量作用域&#xff1f; 變量作用域&#xff08;Scope&#xff09;指的是變量在程序中…

初學者的AI智能體課程:構建AI智能體的十堂課

初學者的AI智能體課程:構建AI智能體的十堂課 在人工智能(AI)領域,AI智能體正在逐漸發揮其不容忽視的作用。自動化的智能體不僅僅在理論上廣泛討論,更加在實際應用中開辟了一片新的天地。那么如何動手開發屬于自己的AI智能體呢?Microsoft提供的AI智能體入門課正是為此而設…