欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Spring Boot + MyBatis Plus 高效開發(fā)實(shí)戰(zhàn)從入門到進(jìn)階優(yōu)化(推薦)

 更新時(shí)間:2025年04月02日 17:08:38   作者:全棧探索者chen  
本文將詳細(xì)介紹 Spring Boot + MyBatis Plus 的完整開發(fā)流程,并深入剖析分頁查詢、批量操作、動(dòng)態(tài) SQL、樂觀鎖、代碼優(yōu)化等實(shí)戰(zhàn)技巧,感興趣的朋友一起看看吧

Spring Boot + MyBatis Plus 高效開發(fā)實(shí)戰(zhàn):從入門到進(jìn)階優(yōu)化

在 Java Web 開發(fā)中,Spring Boot 結(jié)合 MyBatis Plus 是高效構(gòu)建 CRUD 業(yè)務(wù)的最佳實(shí)踐之一。相比傳統(tǒng) MyBatis,MyBatis Plus 進(jìn)一步簡化了SQL 語句編寫,減少了重復(fù)代碼,提供了豐富的自動(dòng)封裝功能。

本文將詳細(xì)介紹 Spring Boot + MyBatis Plus 的完整開發(fā)流程,并深入剖析分頁查詢、批量操作、動(dòng)態(tài) SQL、樂觀鎖、代碼優(yōu)化等實(shí)戰(zhàn)技巧,讓你的項(xiàng)目開發(fā)更加高效!??

1. MyBatis Plus 簡介

MyBatis PlusMyBatis 的增強(qiáng)工具,提供了大量開箱即用的功能,如:
? 無需手寫 SQL,封裝了基礎(chǔ) CRUD 方法 (selectById, update, delete 等)。
? Lambda 表達(dá)式查詢,避免 SQL 注入,代碼更加優(yōu)雅。
? 內(nèi)置分頁插件,高效查詢大數(shù)據(jù)集合。
? 邏輯刪除,避免誤刪除數(shù)據(jù)。
? 多租戶模式、樂觀鎖支持,適用于大規(guī)模分布式系統(tǒng)。

2. Spring Boot + MyBatis Plus 快速集成

2.1 引入 Maven 依賴

pom.xml 中添加 Spring Boot + MyBatis Plus 依賴:

<dependencies>
    <!-- Spring Boot Starter -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter</artifactId>
    </dependency>
    <!-- MyBatis Plus 依賴 -->
    <dependency>
        <groupId>com.baomidou</groupId>
        <artifactId>mybatis-plus-boot-starter</artifactId>
        <version>3.5.3</version>
    </dependency>
    <!-- MySQL 驅(qū)動(dòng) -->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <scope>runtime</scope>
    </dependency>
    <!-- Druid 數(shù)據(jù)源 -->
    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>druid-spring-boot-starter</artifactId>
        <version>1.2.11</version>
    </dependency>
</dependencies>

? 這里使用 Druid 作為數(shù)據(jù)庫連接池,提升性能。

2.2 配置數(shù)據(jù)庫連接

application.yml 文件中配置數(shù)據(jù)庫連接:

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/demo_db?useSSL=false&serverTimezone=UTC
    username: root
    password: root123
    driver-class-name: com.mysql.cj.jdbc.Driver
  mybatis-plus:
    configuration:
      map-underscore-to-camel-case: true # 開啟駝峰命名
      log-impl: org.apache.ibatis.logging.stdout.StdOutImpl # 開啟 SQL 日志

? map-underscore-to-camel-case: true,自動(dòng)將 user_id 映射為 userId。
? log-impl: StdOutImpl,方便查看執(zhí)行的 SQL 語句。

3. 創(chuàng)建 MyBatis Plus 業(yè)務(wù)代碼

3.1 定義數(shù)據(jù)庫表

CREATE TABLE user (
    id BIGINT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(50) NOT NULL,
    age INT NOT NULL,
    email VARCHAR(100) UNIQUE
);

3.2 創(chuàng)建實(shí)體類

import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
@Data
@TableName("user") // 指定數(shù)據(jù)庫表名
public class User {
    @TableId
    private Long id; // 主鍵
    private String name;
    private Integer age;
    private String email;
}

? @TableName("user") 綁定表名,防止 MyBatis Plus 生成錯(cuò)誤的 SQL。

3.3 創(chuàng)建 DAO 層

MyBatis Plus 提供了 BaseMapper,自動(dòng)封裝 CRUD 方法:

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface UserMapper extends BaseMapper<User> {
}

? 無需手寫 SQL,MyBatis Plus 自動(dòng)生成 insert, select, update, delete 方法。

3.4 創(chuàng)建 Service 層

import com.baomidou.mybatisplus.extension.service.IService;
public interface UserService extends IService<User> {
}
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {
}

? IService + ServiceImpl 組合,可直接調(diào)用 CRUD 方法。

3.5 創(chuàng)建 Controller

import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
@RequestMapping("/users")
public class UserController {
    private final UserService userService;
    public UserController(UserService userService) {
        this.userService = userService;
    }
    // 查詢所有用戶
    @GetMapping
    public List<User> getAllUsers() {
        return userService.list();
    }
    // 添加用戶
    @PostMapping
    public boolean addUser(@RequestBody User user) {
        return userService.save(user);
    }
}

? 直接使用 list() 查詢所有用戶,無需手寫 SQL。

4. 進(jìn)階優(yōu)化:分頁、Lambda 查詢、批量操作

4.1 分頁查詢

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@GetMapping("/page")
public IPage<User> getUserPage(@RequestParam int pageNum, @RequestParam int pageSize) {
    return userService.page(new Page<>(pageNum, pageSize));
}

? MyBatis Plus 內(nèi)置分頁插件,自動(dòng)優(yōu)化 SQL。

4.2 Lambda 查詢

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
@GetMapping("/search")
public List<User> searchUser(@RequestParam String name) {
    return userService.list(new LambdaQueryWrapper<User>()
            .like(User::getName, name) // 模糊查詢
            .orderByDesc(User::getAge)); // 按年齡倒序
}

? Lambda 表達(dá)式查詢,避免 SQL 注入。

4.3 批量插入

import java.util.Arrays;
@PostMapping("/batch")
public boolean batchInsert() {
    List<User> users = Arrays.asList(
        new User(null, "Alice", 25, "alice@example.com"),
        new User(null, "Bob", 30, "bob@example.com")
    );
    return userService.saveBatch(users);
}

? saveBatch() 支持高效批量插入,減少數(shù)據(jù)庫連接次數(shù)。

5. 總結(jié)

?? MyBatis Plus 提供強(qiáng)大的 CRUD 自動(dòng)封裝,開發(fā)效率大幅提升。
?? 結(jié)合 分頁查詢、Lambda 表達(dá)式、批量操作,代碼更簡潔、更易維護(hù)。
?? 避免 SQL 注入,提升查詢效率,是 Java 開發(fā)者必備的 ORM 工具。

如果你正在開發(fā) Spring Boot 項(xiàng)目,強(qiáng)烈推薦你使用 MyBatis Plus 進(jìn)行高效開發(fā)!?? 快試試看吧! ??

到此這篇關(guān)于Spring Boot + MyBatis Plus 高效開發(fā)實(shí)戰(zhàn)從入門到進(jìn)階優(yōu)化(推薦)的文章就介紹到這了,更多相關(guān)Spring Boot MyBatis Plus開發(fā)實(shí)戰(zhàn)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • java實(shí)現(xiàn)高效的枚舉元素集合示例

    java實(shí)現(xiàn)高效的枚舉元素集合示例

    Set是Java集合類的重要組成部分,它用來存儲(chǔ)不能重復(fù)的對象。枚舉類型也要求其枚舉元素各不相同??雌饋砻杜e類型和集合是很相似的。然而枚舉類型中的元素不能隨意的增加、刪除,作為集合而言,枚舉類型非常不實(shí)用。EnumSet是專門為enum實(shí)現(xiàn)的集合類,本實(shí)例將演示其用法
    2014-03-03
  • 解決@Transaction注解導(dǎo)致動(dòng)態(tài)切換更改數(shù)據(jù)庫失效問題

    解決@Transaction注解導(dǎo)致動(dòng)態(tài)切換更改數(shù)據(jù)庫失效問題

    這篇文章主要介紹了解決@Transaction注解導(dǎo)致動(dòng)態(tài)切換更改數(shù)據(jù)庫失效問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • Jdk1.8 HashMap實(shí)現(xiàn)原理詳細(xì)介紹

    Jdk1.8 HashMap實(shí)現(xiàn)原理詳細(xì)介紹

    這篇文章主要介紹了Jdk1.8 HashMap實(shí)現(xiàn)原理詳細(xì)介紹的相關(guān)資料,需要的朋友可以參考下
    2016-12-12
  • java中BigDecimal的介紹及使用教程BigDecimal格式化及BigDecimal常見問題

    java中BigDecimal的介紹及使用教程BigDecimal格式化及BigDecimal常見問題

    BigDecimal是Java在java.math包中提供的線程安全的API類,用來對超過16位有效位的數(shù)進(jìn)行精確的運(yùn)算,這篇文章主要介紹了java中BigDecimal的介紹及使用,BigDecimal格式化,BigDecimal常見問題,需要的朋友可以參考下
    2023-08-08
  • Java?GUI編程菜單組件實(shí)例詳解

    Java?GUI編程菜單組件實(shí)例詳解

    在實(shí)際開發(fā)中,除了主界面,還有一類比較重要的內(nèi)容就是菜單相關(guān)組件,可以通過菜單相關(guān)組件很方便的使用特定的功能,今天通過本文給大家介紹下Java?GUI編程菜單組件實(shí)例詳解,感興趣的朋友一起看看吧
    2022-04-04
  • Java事務(wù)的個(gè)人理解小結(jié)

    Java事務(wù)的個(gè)人理解小結(jié)

    數(shù)據(jù)庫操作的事務(wù)習(xí)慣上就稱為Java事務(wù)
    2013-03-03
  • java關(guān)鍵字abstract(抽象)實(shí)例詳解

    java關(guān)鍵字abstract(抽象)實(shí)例詳解

    在Java中,抽象類是不能實(shí)例化的類,它通常作為其他子類的父類存在,并提供了一種繼承的框架,抽象類中可以包含抽象方法,這些方法沒有具體的實(shí)現(xiàn),必須由子類來提供,本文給大家介紹java關(guān)鍵字abstract(抽象)實(shí)例詳解,感興趣的朋友跟隨小編一起看看吧
    2024-10-10
  • 完美解決gson將Integer默認(rèn)轉(zhuǎn)換成Double的問題

    完美解決gson將Integer默認(rèn)轉(zhuǎn)換成Double的問題

    下面小編就為大家?guī)硪黄昝澜鉀Qgson將Integer默認(rèn)轉(zhuǎn)換成Double的問題。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-03-03
  • Java 處理超大數(shù)類型之BigInteger案例詳解

    Java 處理超大數(shù)類型之BigInteger案例詳解

    這篇文章主要介紹了Java 處理超大數(shù)類型之BigInteger案例詳解,本篇文章通過簡要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-09-09
  • SpringCloud之Feign代理,聲明式服務(wù)調(diào)用方式

    SpringCloud之Feign代理,聲明式服務(wù)調(diào)用方式

    這篇文章主要介紹了SpringCloud之Feign代理,聲明式服務(wù)調(diào)用方式,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-03-03

最新評論