mybatis-plus-01-環境初始化及簡單應用

文章目錄

  • 【README】
  • 【1】springboot集成mybatis-plus配置
    • 【1.1】目錄結構
      • 【相關說明】
    • 【1.2】代碼示例
      • 【pom.xml】
      • 【application.properties】
      • 【MybatisPlusNoteController】
      • 【UserAppService】
      • 【UserMapper】
      • 【UserPO】
      • 【建表語句】
  • 【2】演示

【README】

本文代碼參見: https://github.com/TomJourney/mybatis-plus-test

本文集成了springboot與mybatis-plus,并提供了一個mybatis-plus的簡單應用;

【使用MyBatisPlus的關鍵】springboot集成了mybatis的基礎上,使用mybatis-plus就2步:

  • 步驟1)引入mybatis-plus依賴,刪除 mybatis-spring-boot-starter 依賴;
  • 步驟2)業務Mapper如UserMapper繼承MyBatis-Plus中的BaseMapper;

【pom.xml中spring-mybatis與mybaits-plus依賴配置】

<!-- mybatis conf (新增mybatis-plus-boot-starter依賴,需要把mybatis-spring-boot-starter注釋或刪除,否則報包沖突)-->
<!--    <dependency>-->
<!--      <groupId>org.mybatis.spring.boot</groupId>-->
<!--      <artifactId>mybatis-spring-boot-starter</artifactId>-->
<!--      <version>3.0.3</version>-->
<!--    </dependency>-->
<dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.5.12</version>
</dependency>
<dependency><groupId>org.mybatis</groupId><artifactId>mybatis-spring</artifactId><version>3.0.3</version>
</dependency>


【1】springboot集成mybatis-plus配置

【1.1】目錄結構

在這里插入圖片描述

【相關說明】

本文項目使用了springboot, lombok,mybatis-plus;采用不規范的三層架構(為了求快),正式的生產環境不要參考本文代碼;

補充:規范的代碼應該是4層架構,包括adapter,app,domain,infra (有興趣的同學參考ddd);



【1.2】代碼示例

【pom.xml】

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>3.3.5</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.tom.studynote</groupId><artifactId>mybatis-plus-test</artifactId><version>0.0.1-SNAPSHOT</version><name>mybatis-plus-test</name><description>mybatis-plus-test</description><url/><properties><java.version>17</java.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><version>3.3.5</version></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.29</version></dependency><!--【數據庫】數據庫連接池--><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.2.11</version></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><scope>provided</scope></dependency><!-- https://mvnrepository.com/artifact/org.mapstruct/mapstruct --><dependency><groupId>org.mapstruct</groupId><artifactId>mapstruct</artifactId><version>1.6.2</version></dependency><dependency><groupId>org.mapstruct</groupId><artifactId>mapstruct-processor</artifactId><version>1.6.2</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><!-- mybatis conf (新增mybatis-plus-boot-starter依賴,需要把mybatis-spring-boot-starter注釋或刪除,否則報包沖突)--><!--    <dependency>--><!--      <groupId>org.mybatis.spring.boot</groupId>--><!--      <artifactId>mybatis-spring-boot-starter</artifactId>--><!--      <version>3.0.3</version>--><!--    </dependency>--><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.5.12</version></dependency><dependency><groupId>org.mybatis</groupId><artifactId>mybatis-spring</artifactId><version>3.0.3</version></dependency></dependencies><build><resources><resource><directory>src/main/java</directory><includes><include>**/*.xml</include></includes></resource><resource><directory>src/main/resources</directory></resource></resources><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>

【application.properties】

server.port = 8081# spring datasource conf
spring.datasource.url=jdbc:mysql://localhost:3306/mywarn?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai&useSSL=false
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource# druid
spring.datasource.druid.initial-size=1
spring.datasource.druid.max-active=5
spring.datasource.druid.min-idle=5
spring.datasource.druid.max-wait=60000# mybatis conf
mybatis.mapper-locations=classpath:com/mybatisplustest/infrastructure/dao/**/*.xml
mybatis.config-location=classpath:mybatis-config.xml
check-config-location=true# template path
spring.web.resources.static-locations=classpath:/templates# mybaits-plus
mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl

【TomMybatisPlusNoteApplication】

@SpringBootApplication
@MapperScan(basePackages = {"com.tom.study.mybatisplustest.infrastructure.dao"})
public class TomMybatisPlusNoteApplication {public static void main(String[] args) {SpringApplication.run(TomMybatisPlusNoteApplication.class, args);}
}

【MybatisPlusNoteController】

@RestController
@RequestMapping("/mybatis-plus-note")
public class MybatisPlusNoteController {@Autowiredprivate UserAppService userAppService;@GetMapping("/user/{id}")public UserPO findUserById(@PathVariable("id") String id) {return userAppService.findUserById(id);}@PostMapping(path = "/add-user", consumes = "application/json")public void addUser(@RequestBody UserPO userPO) {userAppService.saveNewUser(userPO);}
}

【UserAppService】

@Service
public class UserAppService {@AutowiredUserMapper userMapper;public UserPO findUserById(String id) {return userMapper.selectById(id);}public void saveNewUser(UserPO UserPO) {userMapper.insert(UserPO);}
}

【UserMapper】

【關鍵】業務Mapper-UserMapper只需要繼承BaseMapper即可使用mybatis-plus 提供的api

public interface UserMapper extends BaseMapper<UserPO> {
}

【UserPO】

@Data
@TableName("user_tbl")
public class UserPO {private Long id;private String name;private String mobilePhone;private String addr;
}

【建表語句】

-- mywarn.user_tbl definitionCREATE TABLE `user_tbl` (`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主鍵',`name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '用戶名稱',`mobile_phone` varchar(11) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '移動電話',`addr` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '地址',`user_state` char(4) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '用戶狀態/ON-在線/OFF-離線',`create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,`last_modify_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=117 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='用戶表';


【2】演示

請求路徑:localhost:8081/mybatis-plus-note/add-user

報文:

{"id": 10,"name": "user10","mobilePhone": "17712340010","addr": "成都天府三街010號"
}

在這里插入圖片描述



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

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

相關文章

VR小鼠解剖虛擬仿真:開啟生命科學教育新視野?

VR 小鼠解剖虛擬仿真&#xff0c;是一項將虛擬現實(VR)技術深度融入小鼠解剖學習與研究過程的創新應用&#xff0c;即 VR 小鼠解剖虛擬仿真。其核心原理在于&#xff0c;借助 VR 技術所構建的高度逼真的虛擬環境&#xff0c;突破了傳統小鼠解剖在時間、空間以及實體操作上的諸多…

計算機網絡(網頁顯示過程,TCP三次握手,HTTP1.0,1.1,2.0,3.0,JWT cookie)

前言 最近一直在后端開發的面經&#x1f64c;&#xff0c;里面涉及到了好多計算機網絡的知識&#x1f601;&#xff0c;在這里以問題的形式寫一個學習筆記&#xff08;其中參考了: JavaGuide 和 小林coding 這兩個很好的學習網站&#x1f618;&#xff09; 1.當鍵入網址后&am…

Redis 消息的發布和訂閱

Redis 消息的發布和訂閱 1、什么是發布和訂閱 Redis 發布訂閱 (pub/sub) 是一種消息通信模式&#xff1a;發送者 (pub) 發送消息&#xff0c;訂閱者 (sub) 接收消息。 Redis 客戶端可以訂閱任意數量的頻道。 2、Redis的發布和訂閱示意 1、客戶端可以訂閱頻道如下圖 2、當…

python優先隊列使用

heapq 是 Python 的一個內置模塊&#xff0c;提供了堆隊列算法的實現&#xff0c;也稱為優先隊列算法。以下是關于 heapq 模塊的詳細使用說明。 基本概念 堆&#xff1a;一種特殊的二叉樹結構&#xff0c;滿足父節點總是小于或等于其子節點&#xff08;最小堆&#xff09;特性…

在 Windows 機器上安裝和配置 RabbitMQ

RabbitMQ 它是一款基于 AMQP&#xff08;高級消息隊列協議&#xff09;的流行消息代理。RabbitMQ 適用于 Windows、Linux 和 macOS&#xff0c;易于安裝和使用&#xff0c;并提供一系列強大的消息隊列和路由功能。要在 Windows 計算機上使用 RabbitMQ&#xff0c;您必須先安裝 …

第十五節:第六部分:日志技術:logback的核心配置文件詳解、日志級別

核心配置文件logback.xml 什么是日志級別&#xff0c;為什么要學日志級別

從入門到精通:數據庫全攻略

目錄一、數據庫基礎概念1.1 數據庫定義1.2 數據庫與文件系統的區別1.3 數據庫系統組成部分1.4 關系型數據庫與非關系型數據庫二、數據庫安裝與配置2.1 下載 MySQL2.2 安裝 MySQL2.3 初始化數據庫服務器2.4 啟動和停止 MySQL 服務2.5 登錄 MySQL2.6 創建數據庫2.7 創建數據表三、…

【JAVA】消息隊列(MQ)是個好東西

一、前言再JAVA系統開發中&#xff0c;再高并發的場景經常需要使用到消息隊列&#xff0c;有時候是不得不使用到消息對了。特別是大數據量的并發處理。對數據實時性要求又沒那么高的情況下。用戶請求 → 接入層(Nginx) → 限流 → 消息隊列 → 訂單服務 → 庫存服務 → 支付服務…

【Golang面試題】Go結構體的特點,與其它語言的區別

Go 結構體深度解析&#xff1a;與 C/C、Java 的全面對比 一、核心概念對比特性Go 結構體 (struct)C/C 結構體 (struct)Java 類 (class)本質值類型復合數據類型值類型復合數據類型引用類型內存分配棧或堆 (編譯器決定)棧 (顯式控制)堆 (JVM管理)默認訪問權限首字母大寫導出publi…

CppCon 2018 學習:OOP is dead, long live Data-oriented design

探討了面向對象編程&#xff08;OOP&#xff09;的一些根本性問題深入理解&#xff1a; 標題&#xff1a;What is so wrong with OOP? 什么是面向對象的問題&#xff1f; 這不是說 OOP “絕對錯誤”&#xff0c;而是指出它在實踐中經常引發的問題&#xff0c;尤其是在性能敏…

科學的第五范式:人工智能如何重塑發現之疆

在人類探索未知的壯闊史詩中&#xff0c;科學方法的演進如同照亮迷霧的燈塔。從基于經驗的第一范式&#xff08;描述自然現象&#xff09;&#xff0c;到以理論推演為核心的第二范式&#xff08;牛頓定律、麥克斯韋方程&#xff09;&#xff0c;再到以計算機模擬為標志的第三范…

tmux 左下角會話名顯示不全的解決方法

在 tmux 中顯示完整的會話名 有時候我們要在服務器上長時間跑某個任務&#xff0c;但不可能時時刻刻保持終端模擬器開啟&#xff0c;這時候就需要用到 tmux &#xff0c;可以在關閉會話的同時讓任務繼續在后臺跑&#xff0c;后續還可以連回來。但在 tmux 會話中&#xff0c;左…

【期末分布式】分布式的期末考試資料大題整理

&#x1f9f8;安清h&#xff1a;個人主頁 &#x1f3a5;個人專欄&#xff1a;【Spring篇】【計算機網絡】【Mybatis篇】 &#x1f3af;大題 ?一.Nacos的服務注冊與發現 &#x1f6a6;1.怎么來進行服務的注冊與發現的這樣的一個流程&#xff0c;描述一下。 &#x1f383;描述…

Android手機無網離線使用FunASR識別麥克風語音內容

手機斷網離線使用FunASR識別麥克風語音內容 --本地AI電話機器人 上一篇&#xff1a;阿里FunASR本地斷網離線識別模型簡析 下一篇&#xff1a;手機無網離線使用FunASR識別手機歷史通話錄音 一、前言 繼上一篇《阿里FunASR本地斷網離線識別模型簡析》和前面幾篇ASR相關理論的…

Stable Diffusion 項目實戰落地:從0到1 掌握ControlNet 第五篇 線稿到高清修復:一步步教你用AI做出完美IP形象

大家好!上一篇,我們一起玩轉了字體風格變換 ,讓文字根據提示詞進行自如變換,個性十足又充滿創意! 如果你錯過了那篇文章,別擔心,趕緊點這里補課:Stable Diffusion 項目實戰落地:從0到1 掌握ControlNet 第四篇 風格化字體大揭秘:從線稿到涂鴉,ControlNet讓文字煥發新生…

Java網絡編程:TCP/UDP套接字通信詳解

TCP客戶端套接字創建與使用 Socket類基礎概念 Socket類的對象代表TCP客戶端套接字&#xff0c;用于與TCP服務器套接字進行通信。與服務器端通過accept()方法獲取Socket對象不同&#xff0c;客戶端需要主動執行三個關鍵步驟&#xff1a;創建套接字、綁定地址和建立連接。 客戶端…

VMware vSphere 9與ESXi 9正式發布:云原生與AI驅動的虛擬化平臺革新

2025年6月18日&#xff0c;VMware正式推出其旗艦虛擬化平臺vSphere 9及配套的ESXi 9操作系統&#xff0c;標志著企業級虛擬化技術邁入以云原生、人工智能&#xff08;AI&#xff09;和硬件加速為核心的新紀元。此次更新不僅在功能層面實現突破&#xff0c;更通過授權模式革新為…

汽車功能安全概念階段開發【相關項定義HARA】2

文章目錄 1 淺談概念階段開發2 功能安全概念階段開發2.1 相關項定義2.2 危害分析與風險評估&#xff08;HARA-Hazard Analysis and Risk Assessment&#xff09; 3 關鍵輸出與對后續階段的影響4 總結 1 淺談概念階段開發 概念階段開發是整個研發流程的起點和基石。它發生在任何…

WPF中依賴屬性和附加屬性

依賴屬性&#xff08;DependencyProperty&#xff09; 依賴屬性是WPF中的一種特殊屬性&#xff0c;它的實現依賴于DependencyObject類提供的基礎設施。與普通的.NET屬性不同&#xff0c;依賴屬性的值可以通過多種方式確定&#xff0c;包括繼承、樣式、數據綁定和動畫等。 主要特…

Docker 中如何實現鏡像的推送和拉取

在 Docker 中&#xff0c;鏡像的推送&#xff08;push&#xff09;和拉取&#xff08;pull&#xff09;是通過與**Docker 鏡像倉庫&#xff08;Registry&#xff09;**交互完成的。默認倉庫是 Docker Hub&#xff0c;但你也可以使用私有倉庫&#xff08;Harbor、Nexus、AWS ECR…