整合 Mybatis Plus

什么是 MyBatis Plus?

MyBatis Plus (簡稱 MP) 是一款持久層框架,說白話就是一款操作數據庫的框架。它是一個 MyBatis 的增強工具,就像 iPhone手機一般都有個 plus 版本一樣,它在 MyBatis 的基礎上只做增強不做改變,為簡化開發、提高效率而生。

MyBatis Plus 的愿景是成為 MyBatis 最好的搭檔,就像魂斗羅中的 1P、2P,基友搭配,效率翻倍。

MyBatis Plus 的優勢

  • 快速開發:MyBatis Plus 提供了一系列的便捷功能,如自動生成 SQL 語句、通用 Mapper 等,使數據庫操作更加高效,能夠節省開發時間。
  • 更少的配置: Spring Boot 已經為我們提供了很多默認的配置,整合 MyBatis Plus 時只需少量的配置,減少了繁瑣的配置步驟。
  • 內置分頁插件:MyBatis Plus 內置了分頁插件,無需額外的代碼,就可以輕松實現分頁查詢。
  • 更好的支持: MyBatis Plus 在社區中有較廣泛的使用,擁有活躍的維護者和開發者,您可以輕松找到解決方案和文檔。

建表

在數據庫右鍵,新建查詢:

執行如下建表語句:

CREATE TABLE `t_user` (`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT 'id',`username` varchar(60) NOT NULL COMMENT '用戶名',`password` varchar(60) NOT NULL COMMENT '密碼',`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '創建時間',`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '最后一次更新時間',`is_deleted` tinyint(2) NOT NULL DEFAULT '0' COMMENT '邏輯刪除:0:未刪除 1:已刪除',PRIMARY KEY (`id`) USING BTREE,UNIQUE KEY `uk_username` (`username`) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用戶表';

添加依賴

在父項目 主項目 的?pom.xml?文件中,聲明 MP 的依賴版本號:

<!-- 版本號統一管理 --><properties>// 省略...<mybatis-plus.version>3.5.2</mybatis-plus.version></properties><!-- 統一依賴管理 --><dependencyManagement><dependencies>// 省略...<!-- Mybatis Plus --><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>${mybatis-plus.version}</version></dependency></dependencies></dependencyManagement>

然后,在 xx-module-common 公共模塊的?pom.xml?文件中,引入 MP 和 MySQL 依賴:

<!-- Mybatis Plus --><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId></dependency><!-- mysql 依賴 --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId></dependency>

配置文件

編輯?applicaiton-dev.yml?文件,添加數據庫鏈接相關的配置,包含連接池的配置:

spring:datasource:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://127.0.0.1:3306/weblog?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&useSSL=false&zeroDateTimeBehavior=convertToNullusername: rootpassword: 123456hikari:minimum-idle: 5maximum-pool-size: 20auto-commit: trueidle-timeout: 30000pool-name: Weblog-HikariCPmax-lifetime: 1800000connection-timeout: 30000connection-test-query: SELECT 1

解釋一下各個配置的含義和作用:

  • spring.datasource.driver-class-name: 指定數據庫驅動類的完整類名,這里使用的是 MySQL 數據庫的驅動類。
  • spring.datasource.url: 數據庫連接的URL,指向本地的MySQL數據庫,端口是3306,數據庫名是xx,同時配置了一系列參數,如使用Unicode編碼、字符編碼為UTF-8、自動重連、不使用SSL、對零時間進行轉換等。
  • spring.datasource.username: 數據庫用戶名,這里使用的是root
  • spring.datasource.password: 數據庫密碼,這里使用的是123456

數據庫鏈接池這塊,我們使用的 Spring Boot 默認的 HikariCP,它是一個高性能的連接池實現 , 同時,它號稱是速度最快的連接池:

  • spring.datasource.hikari.minimum-idle: Hikari連接池中最小空閑連接數。
  • spring.datasource.hikari.maximum-pool-size: Hikari連接池中允許的最大連接數。
  • spring.datasource.hikari.auto-commit: 連接是否自動提交事務。
  • spring.datasource.hikari.idle-timeout: 連接在連接池中閑置的最長時間,超過這個時間會被釋放。
  • spring.datasource.hikari.pool-name: 連接池的名字。
  • spring.datasource.hikari.max-lifetime: 連接在連接池中的最大存活時間,超過這個時間會被強制關閉。
  • spring.datasource.hikari.connection-timeout: 獲取連接的超時時間。
  • spring.datasource.hikari.connection-test-query: 用于測試連接是否可用的SQL查詢,這里使用的是SELECT 1,表示執行這個查詢來測試連接。

然后,在 xx-module-common?模塊中的?config?包下,新建一個?MybatisPlusConfig?配置文件,代碼如下:

package com.yanxiaosheng.xx.common.config;import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Configuration;/*** @author: 閆小生* @date: 2023-08-22 16:52* @description: Mybatis Plus 配置文件**/
@Configuration
@MapperScan("com.quanxiaoha.weblog.common.domain.mapper")
public class MybatisPlusConfig {
}
  • @Configuration?: 此注解聲明該類為配置類;

  • @MapperScan?: 掃描 MP 的?mapper?接口存放位置。PS: 數據庫相關的代碼,我們統一放置在?/domain?這個包中,格式如下:

    • dos?: 根據阿里的開發規范,統一將數據庫對應的實體類命名為?xxxDO?這種形式,統一存放此包下。
    • mapper?: 統一放置?mapper?接口文件;

實體類

在?/dos?包中,新建一個?UserDO?類,字段和數據庫中的字段通過轉駝峰的形式對應一一對應起來,MP 框架會默認通過這種規則將字段光聯在一起,內容如下:

package com.yanxiaosheng.xx.common.domain.dos;import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;import java.util.Date;/*** @author: 閆小生* @date: 2023-08-22 17:01* @description: TODO**/
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
@TableName("t_user")
public class UserDO {@TableId(type = IdType.AUTO)private Long id;private String username;private String password;private Date createTime;private Date updateTime;private Boolean isDeleted;
}

新建 Mapper 接口

在?mapper包中,創建一個?UserMapper?接口,代碼如下:

package com.yanxiaosheng.xx.common.domain.mapper;import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.quanxiaoha.weblog.common.domain.dos.UserDO;/*** @author: 閆小生* @date: 2023-08-22 17:06* @description: TODO**/
public interface UserMapper extends BaseMapper<UserDO> {
}

至此,用于操作數據的前置代碼都搞定了。

新增一條用戶記錄

接下來,我們通過單元測試,往數據庫中添加一個測試記錄,看看能否新增成功。在 xx-web?模塊中的單元測試類中,新增一個測試方法,代碼如下:

  @Autowiredprivate UserMapper userMapper;@Testvoid insertTest() {// 構建數據庫實體類UserDO userDO = UserDO.builder().username("閆小生").password("123456").createTime(new Date()).updateTime(new Date()).isDeleted(false).build();userMapper.insert(userDO);}

運行該測試方法,看看表中是否被成功插入一條數據:

可以看到,數據插入成功了。

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

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

相關文章

NOI大綱——普及組——編碼

編碼 ##ASCLL碼 ASCII碼&#xff08;American Standard Code for Information Interchange&#xff0c;美國信息交換標準代碼&#xff09;是一種基于拉丁字母的字符編碼方案&#xff0c;主要用于表示文本數據。ASCII碼包含128個字符&#xff08;0-127&#xff09;&#xff0c…

2024最新boss直聘崗位數據爬蟲,并進行可視化分析

前言 近年來,隨著互聯網的發展和就業市場的變化,數據科學與爬蟲技術在招聘信息分析中的應用變得越來越重要。通過對招聘信息的爬取和可視化分析,我們可以更好地了解當前的就業市場動態、職位需求和薪資水平,從而為求職者和招聘企業提供有價值的數據支持。本文將介紹如何使…

python自動化辦公之PyPDF2

用到的庫&#xff1a;PyPDF2 實現效果&#xff1a;打開pdf文件&#xff0c;把每一頁的內容讀出來 代碼&#xff1a; import PyPDF2 # 打開pdf文件 fileopen(friday.pdf,rb) # 創建pdf文件閱讀器對象 readerPyPDF2.PdfReader(file) # 獲取pdf文件的總頁數 total_pageslen(rea…

Amazon Q——2023 re:Invent 大會的 AI 革新之星

引言 在2023年的 re:Invent 大會上&#xff0c;亞馬遜云科技&#xff08;亞馬遜云科技&#xff09;不僅展示了包括 Amazon Graviton3、Amazon SageMaker Studio Lab、Amazon Connect Wisdom、Amazon QuickSight Q 和 Amazon Private 5G 在內的多項創新產品&#xff0c;還發布了…

【python爬蟲】豆瓣爬蟲學習

文章目錄 網頁地址爬蟲目標技術棧爬蟲代碼注意事項 Python爬蟲學習&#xff1a;我們可以選擇一個相對簡單的網站進行數據抓取。這里以抓取“豆瓣電影Top250”的信息為例&#xff0c;這個網站提供了豐富的電影數據&#xff0c;包括電影名稱、評分、導演、演員等信息。 網頁地址…

AI大模型技術在音樂創造的應用前景

大模型技術在音樂創作領域具有廣闊的應用前景&#xff0c;可以為音樂家、作曲家和音樂愛好者提供以下方面的幫助。北京木奇移動技術有限公司&#xff0c;專業的軟件外包開發公司&#xff0c;歡迎交流合作。 音樂創作輔助&#xff1a;大模型可以幫助音樂家和作曲家生成旋律、和聲…

Win腳本開機自啟ALIst和RClone

轉自個人博客&#xff1a;https://www.jjy2023.cn/2024/05/23/win%e8%84%9a%e6%9c%ac%e5%bc%80%e6%9c%ba%e8%87%aa%e5%90%afalist%e5%92%8crclone/ 在配置完alist和rclone之后&#xff0c;就只需要每次開機啟動兩者就行了&#xff0c;所以感覺使用AListHelper沒有必要&#xff…

算法金 | 協方差、方差、標準差、協方差矩陣

大俠幸會&#xff0c;在下全網同名「算法金」 0 基礎轉 AI 上岸&#xff0c;多個算法賽 Top 「日更萬日&#xff0c;讓更多人享受智能樂趣」 抱個拳&#xff0c;送個禮 1. 方差 方差是統計學中用來度量一組數據分散程度的重要指標。它反映了數據點與其均值之間的偏離程度。在…

Flask無法Debug

問題描述 Flask Debug的時候&#xff0c;可能會無法進入斷點。我使用的是pycharm CE版本。 解決方案 確保pycharm安裝路徑不帶空格。&#xff08;帶空格路徑導致debug程序啟動報錯&#xff09;Gevent compatible&#xff0c;這個東西老的pycharm版本必須勾選它&#xff0c;新…

中霖教育靠譜嗎?在職備考一建好通過嗎?

中霖教育靠譜嗎?在職備考一建好通過嗎? 課程設置&#xff1a;報名后會進行測評&#xff0c;了解學員的知識掌握情況、時間安排和記憶思維特點等&#xff0c;制定更適合的學習計劃。 課程以考試通過為目標&#xff0c;去繁化簡&#xff0c;只講有用的干貨&#xff0c;幫助快…

Python的GIL

Python的GIL是什么&#xff1f;它對多線程編程有什么影響&#xff1f; GIL&#xff08;全局解釋器鎖&#xff09;是Python解釋器中的一個機制&#xff0c;它是為了保證在任何時刻只有一個線程執行Python字節碼。GIL的存在主要因為Python的內存管理和垃圾回收機制是線程不安全的…

使用Vite工具創建項目,并使用Vue Router步驟

步驟 1: 安裝 Vite 首先&#xff0c;確保你的電腦上已經安裝了Node.js和npm。然后&#xff0c;通過以下命令全局安裝Vite&#xff08;如果已經安裝&#xff0c;請跳過此步驟&#xff09;&#xff1a; npm install -g create-vite步驟 2: 創建新的Vue項目 使用Vite創建一個新…

Python 學習之標準庫(二)

Python標準庫是指Python編程語言自帶的一組模塊和包&#xff0c;它們是Python語言的核心組成部分&#xff0c;為開發者提供了豐富的功能和工具&#xff0c;幫助快速實現各種功能需求。以下是對Python標準庫的一些主要內容和模塊的歸納&#xff1a; 1. 數學計算&#xff1a; a.…

Python驅動的智能客服系統構建實錄

Python驅動的智能客服系統構建實錄 作為技術領域的老將&#xff0c;今天我打算帶大家深挖一個熱門應用——智能客服系統&#xff0c;并且如何通過Python這門萬能鑰匙&#xff0c;結合前沿的深度學習技術&#xff0c;賦予其更為人性化、高效的溝通能力。同時&#xff0c;我們不…

VLOOKUP函數在表格的簡單運用-兩個表匹配

1.什么是VLOOKUP&#xff1f; VLOOKUP是Excel中的一個內置函數&#xff0c;主要用于在區域或表格的首列查找指定的值&#xff0c;并返回該行中其他列的值。它特別適用于跨表格數據匹配 2.函數運用 2.1.這邊兩個表取名a表和b表&#xff0c;做為我們的實例表。 表格a包含&…

第二十一站:Java的多彩之旅終結篇

異步編程與反應式系統&#xff1a;應對高并發挑戰 隨著互聯網應用對響應速度和并發處理能力要求的提高&#xff0c;Java生態系統也與時俱進&#xff0c;引入了異步編程模型和反應式編程框架&#xff0c;以應對現代應用的挑戰。 異步編程 Java 8引入了CompletableFuture&…

JavaScript高級程序設計(第四版)--學習記錄之迭代器與生成器(上)

什么是迭代&#xff1f; 迭代的意思是按照順序反復多次執行一段程序。循環是迭代機制的基礎&#xff0c;因為它可以指定迭代的次數&#xff0c;以及每次迭代要執行的操作。 迭代器模式 迭代器模式描述了一個方案&#xff0c;可以把有些結構稱為“可迭代對象” &#xff0c;這些…

基于 DJYOS 的 HMI 場景研究:探索智能生活的無限可能

引言&#xff1a; 在當今數字化時代&#xff0c;人機界面&#xff08;HMI&#xff09;技術的發展正深刻改變著我們的生活方式。DJYOS 作為一款先進的操作系統&#xff0c;為 HMI 產品的開發提供了強大的支持。本文將深入探討基于 DJYOS 的 HMI 場景&#xff0c;展示其在智能家…

通過rediss實現用戶菜單智能推薦

本人用的框架 SpringCloud redisOauth2Security 前言&#xff1a; 整體使用過濾器的思想&#xff0c;獲取Request&#xff0c;然后從數據庫查到菜單名稱和路由以及計算點擊次數&#xff0c;最后以list的形式存在redis&#xff0c;設計定時任務&#xff0c;在一定時間后&#x…

Search for documents with similar texts

題意&#xff1a;搜索具有相似文本的文檔 問題背景&#xff1a; I have a document with three attributes: tags, location, and text. 我有一份文檔&#xff0c;包含三個屬性&#xff1a;標簽、位置和文本。 Currently, I am indexing all of them using LangChain/pgvecto…