springboot集成mybatis-plus詳細使用

以下是 Spring Boot 集成 MyBatis-Plus 的詳細步驟:

創建 Spring Boot 項目

可使用 Spring Initializr 快速創建項目,添加相關依賴。

引入依賴

在項目 pom.xml 文件中添加以下依賴:

<!-- MyBatis-Plus 啟動依賴 -->
<dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.6.5</version>
</dependency>
<!-- 數據庫驅動依賴,以 MySQL 為例 -->
<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><scope>runtime</scope>
</dependency>

配置數據源及 MyBatis-Plus

application.ymlapplication.properties 文件中進行配置。

application.yml 示例:

spring:datasource:url: jdbc:mysql://localhost:3306/your_database_name?useSSL=false&serverTimezone=UTCusername: rootpassword: your_passworddriver-class-name: com.mysql.cj.jdbc.Driver
mybatis-plus:mapper-locations: classpath:mapper/*.xmltype-aliases-package: com.example.yourproject.entityconfiguration:log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

application.properties 示例

spring.datasource.url=jdbc:mysql://localhost:3306/your_database_name?useSSL=false&serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=your_password
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
mybatis-plus.mapper-locations=classpath:mapper/*.xml
mybatis-plus.type-aliases-package=com.example.yourproject.entity
mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl

創建實體類

創建一個 Java 實體類,用于映射數據庫表。例如,創建一個 User 實體類:

package com.example.yourproject.entity;import com.baomidou.mybatisplus.annotation.TableName;@TableName("user") // 指定對應的數據庫表名
public class User {private Long id;private String name;private Integer age;private String email;// Getters 和 Setterspublic Long getId() {return id;}public void setId(Long id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age = age;}public String getEmail() {return email;}public void setEmail(String email) {this.email = email;}
}

創建 Mapper 接口

創建一個 Mapper 接口,繼承 BaseMapperBaseMapper 是 MyBatis-Plus 提供的基礎接口,包含了常用的 CRUD 方法。例如,創建一個 UserMapper 接口:

package com.example.yourproject.mapper;import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.example.yourproject.entity.User;public interface UserMapper extends BaseMapper<User> {// 可以在這里定義自定義的 SQL 方法
}

創建 Mapper XML 文件(可選)

如果需要自定義 SQL 語句,可以在 src/main/resources/mapper 目錄下創建對應的 Mapper XML 文件。例如,UserMapper.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.example.yourproject.mapper.UserMapper"><!-- 自定義 SQL 語句 -->
</mapper>

創建 Service 層

創建 Service 接口及其實現類。例如,創建 UserService 接口和 UserServiceImpl 實現類:

package com.example.yourproject.service;import com.baomidou.mybatisplus.extension.service.IService;
import com.example.yourproject.entity.User;public interface UserService extends IService<User> {// 可以在這里定義自定義的業務方法
}
package com.example.yourproject.service.impl;import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.example.yourproject.entity.User;
import com.example.yourproject.mapper.UserMapper;
import com.example.yourproject.service.UserService;
import org.springframework.stereotype.Service;@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {// 如果需要,可以重寫或實現自定義方法
}

創建 Controller 層

創建一個 Controller 層,用于處理客戶端請求。例如,創建一個 UserController

package com.example.yourproject.controller;import com.example.yourproject.entity.User;
import com.example.yourproject.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;import java.util.List;@RestController
@RequestMapping("/users")
public class UserController {@Autowiredprivate UserService userService;@GetMappingpublic List<User> getAllUsers() {return userService.list();}@GetMapping("/{id}")public User getUserById(@PathVariable Long id) {return userService.getById(id);}@PostMappingpublic boolean saveUser(@RequestBody User user) {return userService.save(user);}@PutMappingpublic boolean updateUser(@RequestBody User user) {return userService.updateById(user);}@DeleteMapping("/{id}")public boolean deleteUser(@PathVariable Long id) {return userService.removeById(id);}
}

配置 MyBatis-Plus 掃描

在 Spring Boot 主應用類上添加 @MapperScan 注解,掃描 Mapper 接口所在的包:

package com.example.yourproject;import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication
@MapperScan("com.example.yourproject.mapper")
public class YourProjectApplication {public static void main(String[] args) {SpringApplication.run(YourProjectApplication.class, args);}
}

配置分頁插件(可選)

application.ymlapplication.properties 文件中配置分頁插件:

application.yml 示例

mybatis-plus:plugins:pagination:enabled: true

application.properties 示例

mybatis-plus.plugins.pagination.enabled=true

然后在 Service 中使用分頁功能:

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;public Page<User> getUsersByPage(int current, int size) {Page<User> page = new Page<>(current, size);return userMapper.selectPage(page, null);
}

測試

可以使用 Spring Boot 的測試框架來測試各個接口。例如:

package com.example.yourproject;import com.example.yourproject.entity.User;
import com.example.yourproject.service.UserService;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;import static org.junit.jupiter.api.Assertions.*;@SpringBootTest
public class YourProjectTests {@Autowiredprivate UserService userService;@Testpublic void testFindAll() {assertTrue(userService.list().size() >= 0);}@Testpublic void testFindById() {User user = new User();user.setName("testuser");user.setAge(20);user.setEmail("test@example.com");userService.save(user);assertNotNull(userService.getById(user.getId()));}@Testpublic void testSave() {User user = new User();user.setName("newuser");user.setAge(25);user.setEmail("new@example.com");assertTrue(userService.save(user));}@Testpublic void testUpdate() {User user = new User();user.setName("updateuser");user.setAge(30);user.setEmail("update@example.com");userService.save(user);user.setAge(35);assertTrue(userService.updateById(user));}@Testpublic void testDelete() {User user = new User();user.setName("deleteuser");user.setAge(28);user.setEmail("delete@example.com");userService.save(user);assertTrue(userService.removeById(user.getId()));}
}

運行 Spring Boot 項目,訪問對應的接口即可測試 MyBatis-Plus 的 CRUD 功能以及其他配置功能。

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

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

相關文章

【wsl】命令說明,wsl的虛擬機ubuntu十分好用

wsl官方說明地址 wsl虛擬機安裝簡單方便&#xff0c;十分推薦。 安裝 在上方的官網鏈接有安裝辦法和各種操作指南&#xff0c;在此不再贅述。 安裝wsl后從微軟商店搜索ubuntu點擊后就能直接安裝虛擬機鏡像&#xff0c;多快好省。 wsl命令 閱讀官網文檔時發現wsl十分強大 …

Open CASCADE學習|判斷一點與圓弧的位置關系

一、引言 在計算機輔助設計&#xff08;CAD&#xff09;、計算機圖形學以及機械制造等眾多領域中&#xff0c;經常需要處理幾何圖形之間的位置關系判斷問題。其中&#xff0c;判斷一個點與圓弧的位置關系是一個基礎且重要的任務。Open CASCADE 作為一個強大的開源幾何建模內核…

<論文>(字節跳動)使用大語言模型進行時間序列理解和推理

一、摘要 本文介紹2024年12月字節跳動牽頭發表的大模型論文《ChatTS: Aligning Time Series with LLMs via Synthetic Data for Enhanced Understanding and Reasoning》。論文提出了 ChatTS 模型&#xff0c;用合成數據提升對時間序列的理解和推理能力。作者在紐約出租車乘客數…

大數據應用開發和項目實戰-電商雙11美妝數據分析

數據初步了解 &#xff08;head出現&#xff0c;意味著只出現前5行&#xff0c;如果只出現后面幾行就是tail&#xff09; info shape describe 數據清洗 重復值處理 這個重復值是否去掉要看實際情況&#xff0c;比如說&#xff1a;昨天賣了5瓶七喜&#xff0c;今天賣了5瓶七…

Vi/Vim 編輯器詳細指南

Vi/Vim 編輯器詳細指南 簡介一、模式詳解1. 命令模式(Normal Mode)2. 插入模式(Insert Mode)3. 可視模式(Visual Mode)4. 命令行模式(Ex Mode)二、核心操作1. 保存與退出2. 導航與移動3. 編輯與文本操作4. 搜索與替換三、高級技巧1. 多文件與窗口操作2. 宏錄制3. 寄存器…

kotlin 01flow-StateFlow 完整教程

一 Android StateFlow 完整教程&#xff1a;從入門到實戰 StateFlow 是 Kotlin 協程庫中用于狀態管理的響應式流&#xff0c;特別適合在 Android 應用開發中管理 UI 狀態。本教程將帶全面了解 StateFlow 的使用方法。 1. StateFlow 基礎概念 1.1 什么是 StateFlow? StateF…

開發搭載OneNet平臺的物聯網數據收發APP的設計與實現

一、開發環境與工具準備 工具安裝 下載HBuilderX開發版(推薦使用開發版以避免插件兼容性問題)安裝Node.js和npm(用于依賴管理及打包)配置Android Studio(本地打包需集成離線SDK)項目初始化 創建uni-app項目,選擇“默認模板”或“空白模板”安裝必要的UI庫(如uView或Van…

HHsuite3 的 HHblits 和 HHsearch比較

HHblits 與 HHsearch 的核心區別及遠源同源檢測能力對比 一、核心功能與定位差異 特征HHblitsHHsearch核心目標快速迭代搜索,構建高質量多序列比對(MSA)和 Profile HMM,用于大規模序列聚類與初步同源篩選。高精度 Profile HMM-HMM 比對,用于深度同源檢測與結構 / 功能預測…

【從零開始學習RabbitMQ | 第二篇】生成交換機到MQ的可靠性保障

目錄 ?編輯前言 交換機 Direct交換機與Fanout交換機的差異 Topic交換機 Topic交換機相比Direct交換機的差異 生成我們的交換機&#xff0c;隊列&#xff0c;以及綁定關系 基于代碼去生成交換機和隊列 基于注解去聲明隊列和交換機 消息轉換器 消息隊列的高可靠性 發送…

LeetCode 熱題 100 22. 括號生成

LeetCode 熱題 100 | 22. 括號生成 大家好&#xff0c;今天我們來解決一道經典的算法題——括號生成。這道題在 LeetCode 上被標記為中等難度&#xff0c;要求生成所有可能的并且有效的括號組合。這是一道非常經典的回溯法題目&#xff0c;非常適合用來練習遞歸和回溯的技巧。…

TestStand API 簡介

TestStand API 簡介 在自動化測試領域&#xff0c;TestStand 憑借其靈活的架構和強大的功能&#xff0c;成為眾多開發者的首選工具。而 TestStand API&#xff08;Application Programming Interface&#xff0c;應用程序編程接口&#xff09;則是打開 TestStand 強大功能的 “…

如何修改 JAR 包中的源碼

如何修改 JAR 包中的源碼 前言一、準備工作二、將 JAR 當作 ZIP 打開并提取三、重寫 Java 類方法 A&#xff1a;直接替換已編譯的 .class方法 B&#xff1a;運行時類路徑優先加載 四、修改 MyBatis&#xff08;或其他&#xff09;XML 資源五、重新打包 JAR&#xff08;命令行&a…

存算一體架構下的新型AI加速范式:從Samsung HBM-PIM看近內存計算趨勢

引言&#xff1a;突破"內存墻"的物理革命 馮諾依曼架構的"存儲-計算分離"設計正面臨根本性挑戰——在GPT-4等萬億參數模型中&#xff0c;數據搬運能耗已達計算本身的200倍。存算一體&#xff08;Processing-In-Memory, PIM&#xff09;技術通過?在存儲介…

藍橋杯15屆國賽 合法密碼

問題描述 小藍正在開發自己的 OJ 網站。他要求網站用戶的密碼必須符合以下條件&#xff1a; 長度大于等于 8 個字符&#xff0c;小于等于 16 個字符。必須包含至少 1 個數字字符和至少 1 個符號字符。 例如 **lanqiao2024!、-*/0601、8((>w<))8** 都是合法的密碼。 而…

Jenkins忘記admin密碼后的恢復步驟

提示&#xff1a;文章寫完后&#xff0c;目錄可以自動生成&#xff0c;如何生成可參考右邊的幫助文檔 文章目錄 前言一、pandas是什么&#xff1f;二、使用步驟 1.引入庫2.讀入數據 總結 前言 提示&#xff1a;這里可以添加本文要記錄的大概內容&#xff1a; 時間較長沒有使用…

C++ - 仿 RabbitMQ 實現消息隊列(1)(環境搭建)

C - 仿 RabbitMQ 實現消息隊列&#xff08;1&#xff09;&#xff08;環境搭建&#xff09; 什么是消息隊列核心特點核心組件工作原理常見消息隊列實現應用場景優缺點 項目配置開發環境技術選型 更換軟件源安裝一些工具安裝epel 軟件源安裝 lrzsz 傳輸工具安裝git安裝 cmake安裝…

簡單面試提問

Nosql非關系型數據庫&#xff1a; Mongodb&#xff1a;開源、json形式儲存、c編寫 Redis&#xff1a;key-value形式儲存&#xff0c;儲存在內存&#xff0c;c編寫 關系型數據庫&#xff1a; sqlite;&#xff1a;輕量型、0配置、磁盤存儲、支持多種語言 mysql&#xff1a;開源…

油氣地震資料信號處理中的NMO(正常時差校正)

油氣地震資料信號處理中的NMO&#xff08;正常時差校正&#xff09;介紹與應用 NMO基本概念 **正常時差校正&#xff08;Normal Moveout Correction&#xff0c;NMO&#xff09;**是地震資料處理中的一項關鍵技術&#xff0c;主要用于消除由于炮檢距&#xff08;source-recei…

深度解析:從 GPT-4o“諂媚”到 Deepseek“物理腔”,透視大模型行為模式的底層邏輯與挑戰

深度解析&#xff1a;從 GPT-4o“諂媚”到 AI“物理腔”&#xff0c;透視大模型行為模式的底層邏輯與挑戰 標簽&#xff1a;人工智能, GPT-4o, 大語言模型, AI倫理, 人機交互, 技術思考 大家好&#xff01;最近AI圈最火的“瓜”之一&#xff0c;莫過于OpenAI的GPT-4o模型在一…

Java引用RabbitMQ快速入門

這里寫目錄 Java發送消息給MQ消費者接收消息實現一個隊列綁定多個消費者消息推送限制 Fanout交換機路由的作用Direct交換機使用案例 Java發送消息給MQ public void testSendMessage() throws IOException, TimeoutException {// 1.建立連接ConnectionFactory factory new Conn…