最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringBoot基于MyBatis-Plus實現Lambda Query查詢的示例代碼

 更新時間:2025年01月12日 08:41:41   作者:Andya  
MyBatis-Plus 是 MyBatis 的增強工具,簡化了數據庫操作,并提高了開發(fā)效率,它提供了多種查詢方式,包括常規(guī)的 SQL 查詢、Lambda Query 查詢、分頁查詢、條件查詢等,在本篇博客中,我們將詳細講解如何使用 MyBatis-Plus 的各種查詢方式,需要的朋友可以參考下

引言

MyBatis-Plus 是 MyBatis 的增強工具,簡化了數據庫操作,并提高了開發(fā)效率。它提供了多種查詢方式,包括常規(guī)的 SQL 查詢、Lambda Query 查詢、分頁查詢、條件查詢等。在本篇博客中,我們將詳細講解如何使用 MyBatis-Plus 的各種查詢方式,涵蓋以下內容:

  • 基礎環(huán)境配置
  • 表結構設計
  • 常見查詢方法
  • 普通查詢
  • Lambda 查詢
  • 條件構造器
  • 聚合查詢
  • 分頁查詢
  • 復雜查詢與多表聯查

基礎環(huán)境配置

首先,你需要確保項目已經引入了 MyBatis-Plus 相關的依賴。假設你的項目是基于 Spring Boot 的,下面是如何配置 Maven 依賴的示例。

依賴配置(Maven)

<dependencies>
    <!-- MyBatis-Plus Starter -->
    <dependency>
        <groupId>com.baomidou</groupId>
        <artifactId>mybatis-plus-boot-starter</artifactId>
        <version>3.5.0</version>
    </dependency>

    <!-- MySQL Connector -->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>8.0.23</version>
    </dependency>

    <!-- Spring Boot Starter Web -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
</dependencies>

application.yml 配置

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/mydb?useSSL=false&serverTimezone=UTC
    username: root
    password: root
    driver-class-name: com.mysql.cj.jdbc.Driver
  mybatis-plus:
    # 配置 MyBatis-Plus
    mapper-locations: classpath:/mappers/*.xml
    typeAliasesPackage: com.example.demo.entity

表結構設計

假設有以下兩個表:

  • demo_student:學生信息
  • demo_class:班級信息

demo_student 表結構

CREATE TABLE demo_student (
  id INT AUTO_INCREMENT PRIMARY KEY,
  name VARCHAR(50) NOT NULL,
  age INT,
  class_id INT,
  gender ENUM('M', 'F') DEFAULT 'M',
  FOREIGN KEY (class_id) REFERENCES demo_class(id)
);

demo_student 表存儲學生信息,其中 class_id 是外鍵,指向 demo_class 表。

demo_class 表結構

CREATE TABLE demo_class (
  id INT AUTO_INCREMENT PRIMARY KEY,
  class_name VARCHAR(50) NOT NULL
);

常見查詢方法

普通查詢(selectOne, selectList, selectById)

  • selectOne:查詢單條記錄。
  • selectList:查詢多條記錄。
  • selectById:通過主鍵查詢一條記錄。
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.IService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class DemoStudentService {

    @Autowired
    private DemoStudentMapper demoStudentMapper;

    // 查詢單個學生
    public DemoStudent getStudentById(Long id) {
        return demoStudentMapper.selectById(id);
    }

    // 查詢所有學生
    public List<DemoStudent> getAllStudents() {
        return demoStudentMapper.selectList(new QueryWrapper<>());
    }
}

Lambda Query 查詢(LambdaQueryWrapper)

MyBatis-Plus 提供了 LambdaQueryWrapper,可以通過 Lambda 表達式來避免字段名硬編碼。

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;

public List<DemoStudent> getStudentsByAge(int age) {
    LambdaQueryWrapper<DemoStudent> queryWrapper = new LambdaQueryWrapper<>();
    // 查詢年齡大于指定值的學生
    queryWrapper.gt(DemoStudent::getAge, age);  
    return demoStudentMapper.selectList(queryWrapper);
}

條件構造器(QueryWrapper)

QueryWrapper 允許通過構建條件來查詢。它支持 eq、ne、lt、gt、like 等各種條件。

public List<DemoStudent> getStudentsByClassId(Long classId) {
    QueryWrapper<DemoStudent> queryWrapper = new QueryWrapper<>();
    // 根據班級ID查詢
    queryWrapper.eq("class_id", classId);  
    return demoStudentMapper.selectList(queryWrapper);
}

條件鏈式查詢

LambdaQueryWrapper 和QueryWrapper支持鏈式調用,可以將多個條件組合成一個查詢。

public List<DemoStudent> getFemaleStudentsOver18() {
    LambdaQueryWrapper<DemoStudent> queryWrapper = new LambdaQueryWrapper<>();
    queryWrapper.eq(DemoStudent::getGender, "F")
                .gt(DemoStudent::getAge, 18);  // 查找性別為女性,且年齡大于18歲的學生
    return demoStudentMapper.selectList(queryWrapper);
}

聚合查詢(selectCount, selectMax, selectMin 等)

MyBatis-Plus 支持基本的聚合查詢,比如統計、求最大值、最小值、平均值等。

// 查詢學生總數
public int getTotalStudents() {
    return demoStudentMapper.selectCount(new QueryWrapper<>());
}

// 查詢年齡最大值
public Integer getMaxAge() {
    return demoStudentMapper.selectMax(DemoStudent::getAge);
}

// 查詢年齡最小值
public Integer getMinAge() {
    return demoStudentMapper.selectMin(DemoStudent::getAge);
}

分頁查詢

分頁查詢在實際開發(fā)中非常常見,MyBatis-Plus 提供了內置的分頁功能,可以非常簡單地實現。

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;

public IPage<DemoStudent> getStudentsPage(int pageNum, int pageSize) {
    Page<DemoStudent> page = new Page<>(pageNum, pageSize);  // 創(chuàng)建分頁對象
    LambdaQueryWrapper<DemoStudent> queryWrapper = new LambdaQueryWrapper<>();
    queryWrapper.gt(DemoStudent::getAge, 18);  // 查詢年齡大于18的學生
    return demoStudentMapper.selectPage(page, queryWrapper);  // 返回分頁結果
}

分頁插件配置

分頁功能需要在 application.yml 中配置分頁插件:

mybatis-plus:
  global-config:
    db-config:
      id-type: auto
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
  plugins:
    - com.baomidou.mybatisplus.extension.plugins.pagination.PageInterceptor

復雜查詢與多表聯查

在 MyBatis-Plus中,雖然不直接支持JOIN操作,但我們可以通過自定義 SQL 來實現復雜的聯表查詢。
示例:查詢學生和班級信息(聯查)

import org.apache.ibatis.annotations.Select;
import java.util.List;

public interface DemoStudentMapper {
    
    @Select("SELECT s.id AS student_id, s.name AS student_name, c.class_name " +
            "FROM demo_student s LEFT JOIN demo_class c ON s.class_id = c.id")
    List<StudentWithClass> selectStudentsWithClass();
}

實現自定義查詢與復雜查詢

對于一些需要自定義 SQL 的場景,可以直接使用 @Select 或 @Update 注解來編寫 SQL。

@Select("SELECT * FROM demo_student WHERE age > #{age} AND gender = #{gender}")
List<DemoStudent> selectByAgeAndGender(int age, String gender);

總結

MyBatis-Plus提供了極為豐富的查詢功能,通過簡潔的 API 和靈活的查詢構造器,可以非常方便地進行數據庫查詢操作。通過以下幾點,可以更好地理解和應用 MyBatis-Plus 的查詢功能:

  • 普通查詢:通過selectOne, selectList, selectById方法可以快速進行數據查詢。
  • Lambda查詢:通過LambdaQueryWrapper構建條件查詢,避免硬編碼字段名,提高代碼可維護性。
  • 條件構造器:QueryWrapperLambdaQueryWrapper提供了多種條件構建方式,支持鏈式調用。
  • 分頁查詢:MyBatis-Plus提供了內置的分頁支持,可以輕松進行分頁查詢。
  • 聚合查詢:支持常見的聚合操作,如selectCount, selectMax, selectMin等。
  • 復雜查詢:通過自定義 SQL 支持聯表查詢,處理更復雜的查詢需求。

以上就是SpringBoot基于MyBatis-Plus實現Lambda Query查詢的示例代碼的詳細內容,更多關于MyBatis-Plus Lambda Query查詢的資料請關注腳本之家其它相關文章!

相關文章

  • flatten-maven-plugin使用教程

    flatten-maven-plugin使用教程

    這篇文章主要介紹了flatten-maven-plugin使用,本文通過示例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-07-07
  • JAVA中Spring Boot的AOP切面編程是什么,如何使用?(實例代碼)

    JAVA中Spring Boot的AOP切面編程是什么,如何使用?(實例代碼)

    本文詳細介紹了SpringBoot中面向切面編程(AOP)的基本概念、核心術語、配置方法以及應用場景,涵蓋了AOP的五種通知類型、切點表達式、動態(tài)代理、切面優(yōu)先級與執(zhí)行順序等核心知識點,并通過實戰(zhàn)案例展示了AOP在微服務架構中的應用潛力
    2026-01-01
  • MybatisPlus自動填充創(chuàng)建(更新)時間問題

    MybatisPlus自動填充創(chuàng)建(更新)時間問題

    在開發(fā)數據庫相關應用時,手動設置創(chuàng)建和更新時間會導致代碼冗余,MybatisPlus提供了自動填充功能,通過實現MetaObjectHandler接口并重寫insertFill、updateFill方法,可以自動維護創(chuàng)建時間、更新時間等字段,極大簡化了代碼,這不僅提高了開發(fā)效率,也保證了數據的可追溯性
    2024-09-09
  • TransmittableThreadLocal解決線程間上下文傳遞煩惱

    TransmittableThreadLocal解決線程間上下文傳遞煩惱

    這篇文章主要為大家介紹了TransmittableThreadLocal解決線程間上下文傳遞煩惱詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-11-11
  • 帶你快速了解Java中類和對象的關系

    帶你快速了解Java中類和對象的關系

    這篇文章主要給大家介紹了關于Java中類和對象關系的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-04-04
  • java自動裝箱拆箱深入剖析

    java自動裝箱拆箱深入剖析

    基本數據(Primitive)類型的自動裝箱(autoboxing)、拆箱(unboxing)是自J2SE 5.0開始提供的功能。java語言規(guī)范中說道:在許多情況下包裝與解包裝是由編譯器自行完成的(在這種情況下包裝成為裝箱,解包裝稱為拆箱)
    2012-11-11
  • 如何理解SpringMVC

    如何理解SpringMVC

    Spring Web MVC是一種基于Java的實現了Web MVC設計模式的請求驅動類型的輕量級Web框架,即使用了MVC架構模式的思想,將web層進行職責解耦,基于請求驅動指的就是使用請求-響應模型,框架的目的就是幫助我們簡化開發(fā)
    2021-06-06
  • spring@value注入配置文件值失敗的原因分析

    spring@value注入配置文件值失敗的原因分析

    這篇文章主要介紹了spring@value注入配置文件值失敗的原因分析,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • Java Map和Set使用詳解(最新推薦)

    Java Map和Set使用詳解(最新推薦)

    本文介紹Java中Map和Set的實現結構,TreeMap/TreeSet基于紅黑樹,HashMap/HashSet基于哈希表,討論哈希沖突處理、負載因子、線程安全及hashCode/equals的作用,涵蓋二叉搜索樹特性、查找效率、插入刪除方法等關鍵內容,感興趣的朋友一起看看吧
    2025-09-09
  • Java超詳細講解設計模式之一的工廠模式

    Java超詳細講解設計模式之一的工廠模式

    工廠模式有 3 種不同的實現方式,分別是簡單工廠模式、工廠方法模式和抽象工廠模式,工廠模式最大的特點就是解耦合,本篇帶你詳細了解它
    2022-03-03

最新評論

绍兴县| 苏州市| 那坡县| 独山县| 佛冈县| 同德县| 崇明县| 潜山县| 平顶山市| 昔阳县| 阳山县| 康乐县| 东海县| 平度市| 平南县| 阳朔县| 山东省| 奉节县| 永春县| 永泰县| 浦县| 河南省| 阿巴嘎旗| 顺平县| 眉山市| 四平市| 永胜县| 通州市| 德格县| 交城县| 普格县| 库伦旗| 长沙市| 霍城县| 大新县| 盐城市| 遂溪县| 黄陵县| 全南县| 晴隆县| 通榆县|