springboot集成MyBatis-Plus

SpringBoot整合MybatisPlus(详细版) ​MybatisPlus是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。它继承了 MyBatis 的所有特性,并且加入了强大的功能,例如自动填充、逻辑删除、乐观锁、性能分析等。 阅读详情
AI摘要

本文详细介绍了Spring Boot集成MyBatis-Plus的方法。包括项目依赖配置、MyBatis-Plus基础配置、复杂查询与条件构造器使用、分页功能实现等内容。还总结了MyBatis-Plus常用功能,如自动填充、逻辑删除等,能帮助开发者快速构建高效数据库访问层。

Spring Boot 集成 MyBatis-Plus 详解

MyBatis-Plus 是 MyBatis 的增强版,提供了开箱即用的 CRUD 操作、条件构造器、分页插件等功能,简化了开发工作,提升了生产力。通过将 MyBatis-Plus 集成到 Spring Boot 中,开发者可以轻松构建高效、简洁的数据库访问层。


1. 项目依赖配置

在 Spring Boot 项目中集成 MyBatis-Plus 需要添加相关的依赖。MyBatis-Plus 提供了一个 spring-boot-starter 来简化配置过程。

1.1 添加 Maven 依赖

在 pom.xml 中添加如下依赖:

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

    <!-- MyBatis-Plus Spring Boot Starter -->
    <dependency>
        <groupId>com.baomidou</groupId>
        <artifactId>mybatis-plus-boot-starter</artifactId>
        <version>3.5.1</version>
    </dependency>

    <!-- MySQL Connector -->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <scope>runtime</scope>
    </dependency>

    <!-- Lombok(可选,用于简化实体类代码) -->
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <scope>provided</scope>
    </dependency>
</dependencies>
  • mybatis-plus-boot-starter:MyBatis-Plus 与 Spring Boot 的集成 starter,简化了 MyBatis-Plus 的配置。
  • mysql-connector-java:MySQL 数据库驱动。
1.2 配置数据库连接信息

在 src/main/resources/application.yml 中配置数据库连接信息:

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/mydb
    username: root
    password: password
    driver-class-name: com.mysql.cj.jdbc.Driver

mybatis-plus:
  mapper-locations: classpath:mapper/*.xml  # XML 配置文件路径
  type-aliases-package: com.example.demo.model  # 实体类包路径
  • datasource:数据库连接相关信息。
  • mapper-locations:MyBatis Mapper XML 文件的路径。
  • type-aliases-package:实体类所在包,简化 MyBatis-Plus 的类型映射。

2. MyBatis-Plus 基础配置

在 MyBatis-Plus 中,通常需要定义实体类、Mapper 接口和相应的 XML 文件(可选)。

2.1 创建实体类

假设有一个 User 表,包含 id、username 和 email 字段。首先创建对应的 User 实体类:

import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.IdType;
import lombok.Data;

@Data
public class User {

    @TableId(type = IdType.AUTO)  // 指定主键生成策略为自增
    private Integer id;

    private String username;

    private String email;
}
  • @TableId:指定主键及其生成策略,IdType.AUTO 表示使用数据库的自增主键。
2.2 创建 Mapper 接口

MyBatis-Plus 通过继承 BaseMapper 接口提供了基础的 CRUD 功能,开发者只需定义实体类对应的 Mapper 接口。

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.example.demo.model.User;
import org.apache.ibatis.annotations.Mapper;

@Mapper
public interface UserMapper extends BaseMapper<User> {
}
  • BaseMapper:提供了通用的 CRUD 操作,支持 insert、update、delete、select 等基本功能。
  • @Mapper:标识为 MyBatis Mapper,Spring Boot 会自动扫描并注入。
2.3 测试 CRUD 操作

为了测试基础的 CRUD 操作,我们创建一个简单的服务类和控制器。

服务类
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.example.demo.mapper.UserMapper;
import com.example.demo.model.User;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class UserService extends ServiceImpl<UserMapper, User> {

    public List<User> getAllUsers() {
        return list();
    }

    public User getUserById(int id) {
        return getById(id);
    }

    public void createUser(User user) {
        save(user);
    }

    public void updateUser(User user) {
        updateById(user);
    }

    public void deleteUser(int id) {
        removeById(id);
    }
}
控制器
import com.example.demo.model.User;
import com.example.demo.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 {

    @Autowired
    private UserService userService;

    @GetMapping
    public List<User> getAllUsers() {
        return userService.getAllUsers();
    }

    @GetMapping("/{id}")
    public User getUserById(@PathVariable int id) {
        return userService.getUserById(id);
    }

    @PostMapping
    public void createUser(@RequestBody User user) {
        userService.createUser(user);
    }

    @PutMapping("/{id}")
    public void updateUser(@PathVariable int id, @RequestBody User user) {
        user.setId(id);
        userService.updateUser(user);
    }

    @DeleteMapping("/{id}")
    public void deleteUser(@PathVariable int id) {
        userService.deleteUser(id);
    }
}

通过该控制器,可以通过 RESTful API 测试基本的 CRUD 操作。


3. 复杂查询与条件构造器

MyBatis-Plus 提供了 Wrapper 条件构造器来简化复杂查询的实现,QueryWrapper 用于构建查询条件,UpdateWrapper 用于构建更新条件。

3.1 使用 QueryWrapper 进行条件查询
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.example.demo.mapper.UserMapper;
import com.example.demo.model.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class UserService {

    @Autowired
    private UserMapper userMapper;

    public List<User> findUsersByCondition(String username, String email) {
        QueryWrapper<User> queryWrapper = new QueryWrapper<>();
        queryWrapper.eq(username != null, "username", username)
                    .like(email != null, "email", email);
        return userMapper.selectList(queryWrapper);
    }
}
  • eq:等值条件。
  • like:模糊匹配。

该查询方法可以根据传入的条件动态生成 SQL 查询。

3.2 使用 UpdateWrapper 进行条件更新
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;

public void updateUserEmail(Integer id, String email) {
    UpdateWrapper<User> updateWrapper = new UpdateWrapper<>();
    updateWrapper.eq("id", id).set("email", email);
    userMapper.update(null, updateWrapper);
}
  • set:指定要更新的字段。
  • eq:条件匹配。

该方法根据 id 更新用户的 email 字段。


4. 分页功能

MyBatis-Plus 提供了内置的分页插件,简化了分页查询操作。首先,需要在项目中配置分页插件。

4.1 配置分页插件

在 MyBatisPlusConfig 配置类中启用分页插件:

import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class MyBatisPlusConfig {

    @Bean
    public PaginationInterceptor paginationInterceptor() {
        return new PaginationInterceptor();
    }
}
4.2 使用分页功能

在服务层使用分页功能:

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.example.demo.mapper.UserMapper;
import com.example.demo.model.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class UserService {

    @Autowired
    private UserMapper userMapper;

    public Page<User> getUsersWithPagination(int pageNum, int pageSize) {
        Page<User> page = new Page<>(pageNum, pageSize);
        return userMapper.selectPage(page, null);
    }
}

在控制器中调用分页查询:

@GetMapping("/page")
public Page<User> getUsersWithPagination(@RequestParam int pageNum, @RequestParam int pageSize) {
    return userService.getUsersWithPagination(pageNum, pageSize);
}
  • Page<T>:MyBatis-Plus 提供的分页对象

,用于封装分页结果。


5. MyBatis-Plus 常用功能总结

  • 自动填充:通过 @TableField(fill = ...) 和 MetaObjectHandler 实现插入和更新时的字段自动填充。
  • 逻辑删除:通过 @TableLogic 实现逻辑删除。
  • 乐观锁:通过 @Version 实现并发时的乐观锁机制。
  • 批量操作:MyBatis-Plus 支持批量插入、更新操作,提升性能。

6. 总结

MyBatis-Plus 的集成和使用在 Spring Boot 项目中非常简单。通过 mybatis-plus-boot-starter,开发者可以轻松构建基础的 CRUD 操作,并利用 MyBatis-Plus 提供的查询构造器、分页插件等功能,快速处理复杂的业务需求。

  • 基础 CRUD:通过继承 BaseMapper,可以直接调用常用的数据库操作方法。
  • 复杂查询:利用 QueryWrapper 和 UpdateWrapper,实现灵活的条件查询和更新。
  • 分页功能:通过 MyBatis-Plus 的分页插件,轻松实现分页查询。
  • 事务管理:MyBatis-Plus 也完全支持 Spring 的事务管理,开发者可以使用 @Transactional 注解管理事务。
SpringBoot教程(十三) SpringBoot集成MybatisPlus 简称MP)是一个MyBatis?的增强工具,在MyBatis的基础上只做增强不做改变,为简化开发、提高效率而生。Mybatis-Plus是一个国产框架,有中文的文档,所以使用起来还是很方便的,没有那么大的障碍。当前的最新版本是3.5.1文档上说的十分清楚,这里我就不多说了。直接进入集成步骤。mybtisPlus的常用操作我们就已经介绍完了。mybatisPlus当前的使用热度也是越来越大,通过这篇文章相信大家应该会对mybatisPlus的使用有一个比较深刻的理解。httpshttps。... 阅读详情

相关推荐

Spring Boot 集成MyBatis-Plus

增加集成相关的配置和依赖后,我们又创建了一个简单的接口,用于验证本次集成是否成功。其中谈到了SSM项目中基本的项目结构,相关代码都是从生产代码中抽象出来的,具有很强的参考意义。在古早的应用开发中,需要开发人员写许多的DAL(数据访问层)代码,需要自己管理数据库的连接与关闭,还需要自己从ResultSet中获取数据,然后再将其组装为对象。并且为了保持依赖的松散,控制器是不直接依赖于具体类的,而是依赖于接口。被该注解修饰的类,setters方法返回的该类的实例(即this),而不是void。

m0_74825614的博客 1383

springboot整合mybatis-plus

springboot整合mybatis-plus,自此告别基础SQL的编写;

听钱塘信来的博客 3万+

【SpringBoot3】Spring Boot 3.0 集成 Mybatis Plus

MyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。

m0_74824517的博客 2421

Springboot整合Mybatis Plus【超详细】

springboot整合mybatis plus

玩转Java 1万+

【TELEMAC V8P4】TELEMAC-2D 用户手册核心概念与应用场景速览

本文深入解析了TELEMAC-2D水动力模型的核心概念与应用。作为基于二维浅水方程的开源数值模拟工具,TELEMAC-2D广泛应用于河流动力学、洪水演进、污染物输运及泥沙运动模拟。文章结合用户手册与实战经验,详细拆解了其理论框架、关键物理过程(如湍流模型、干湿网格处理),并提供了从模型搭建、文件配置到典型场景(如工程评估、污染应急、洪水模拟)的实用指南,帮助用户快速掌握这一强大工具。

weixin_29200741的博客 163

Maxwell参数化建模

MAXWELL 2019 R3 参数化建模 参数化建模的优势 所谓参数化,就是在电机本体设计中涉及到的各类参数变量化,而每个变量之间又存在一定的制约关系,这样只需修改其中某个或者某些变量就可以做到对整个电机模型合理地改动。 参数化举例 以表贴式电机为例,先画电机定子,如上所示,依次进行后会弹出下面的选项框 上图就是描述电机尺寸的各类参数,接下来进行参数化。 回车ENTER,并给变量ds赋值。 赋值好后,回车ENTER 左下角properties里面就有我们新建立的变量ds了。 继续将剩余的参数

qq_41387280的博客 1万+

SpringBoot集成Mybatis Plus【附源码】

Mybatis plus是一个MyBatis的增强工具,在MyBatis的基础上只做增强不做改变,为简化开发、提高效率而生。

笑小枫 2583

[原创]Linux 802.11n CSI tool Monitor模式

Linux 802.11n CSI tool Monitor模式 使用AP模式的缺陷在于ping 命令速度比较慢,且不能精确控制发送的参数,比如接收的包数量是不可控的。Monitor模式可以调制发送速率、发包数量、发送天线个数、HT模式、short/long guard interval等等,因此调通Monitor模式是必须的。期间参考了博主沃一德的CSI Tool安装使用讲解,对他的工作表示感...

u014645508的博客 1万+

springboot之集成mybatis-plus

本文介绍了SpringBoot项目集成MyBatis-Plus的详细步骤。首先对比了MyBatis和MyBatis-Plus的优缺点,重点突出MyBatis-Plus在CRUD操作、条件构造器等方面的优势。然后详细说明了集成过程:1)引入相关依赖;2)配置数据源;3)设置Mapper扫描;4)创建Mapper接口;5)编写Service层;6)定义Controller测试接口。文章还特别强调了分模块部署时的配置注意事项和注解使用的要点。最后通过测试验证了集成的有效性,为开发者提供了完整的MyBatis-Pl

nvkdnx的博客 1167

DC-DC电源PCB布局实战:从EMI优化到热管理

本文深入探讨了DC-DC电源PCB布局的核心实战技巧。文章从分析电流环路入手,强调通过优化“黄金三角”布局以最小化环路面积,从而有效抑制EMI并提升效率。详细阐述了功率器件摆放、地线分割、敏感信号布线、电感下方铺铜策略以及热管理设计等关键步骤,为工程师提供了一套从理论到实践的完整布局指南。

z5a6b的博客 721

Python爬虫实战:用最新技术高效下载摄影网站图片

本文将深入探讨如何利用Python最新技术栈构建一个功能完整的摄影网站图片爬虫。我们将使用异步编程、智能反爬策略和现代化工具,实现高效、可靠的图片下载系统。高性能异步架构:使用asyncio实现高并发下载智能反爬策略:支持多种反爬措施和浏览器模拟多网站适配:可解析多种摄影网站结构数据管理:完整的下载记录和统计功能扩展性强:支持代理、分布式等高级功能用户友好:提供进度显示和详细日志。

2201_76125261的博客 1644

SpringBoot 集成Mybatis Plus

MyBatis-Plus 是在 MyBatis 基础上进行增强的一个持久层框架,旨在简化 MyBatis 的开发过程,提高效率,降低重复代码。它并不改变 MyBatis 的核心理念,而是在其上层进行了封装,使开发者可以更方便地进行 CRUD 操作和复杂查询。MyBatis 本身需要手动编写 SQL 和 Mapper 接口,而 MyBatis-Plus 提供了丰富的自动化功能,如内置通用 Mapper、Service、分页插件、条件构造器等,从而大大减少了模板代码的数量。

m0_75260099的博客 1714

基于机器学习的网络入侵检测系统设计与实现

本文设计并实现了一个基于机器学习的网络入侵检测系统,采用随机森林模型结合KMM算法优化,使用CICIDS2017数据集进行训练。系统包含完整的数据预处理流程、特征工程、模型调优和远程部署方案。实验结果表明,该系统能有效识别多种网络攻击类型,在检测准确率和误报率方面表现优异。研究为网络安全防护提供了新的技术思路和实用工具,具有重要的应用价值。

huanghm88的专栏 318

Spring-boot集成mybatis-plus

一.为什么使用Mybatis plus一.为什么使用Mybatis plus。

xbWGf的博客 3357

Unity Hololens2开发|(一)环境配置

开发过程中预览和调试应用:可以在电脑上的 Unity 编辑器中以播放模式本地运行应用,并将体验流式传输到 HoloLens2。将来自 HoloLens2 的输入(视线、手势、语音和空间映射)发送到电脑,在其中内容以虚拟沉浸式视图渲染。在HoloLens2设备中,打开Settings面板,依次选择Update & Security > For Developers,打开“Developer Mode”。在开发计算机中打开控制面板,依次选择“更新和安全> 开发者选项”,打开“开发人员模式”;

游戏开发小Y的博客 14万+

SCADA|测试KingSCADA4.0信创版采集汇川PLC AC810数据

摘要:雷工分享KingSCADA4.0信创版采集汇川PLC数据的配置过程。由于项目繁忙,笔记更新延迟。信创产业要求采用国产化产品,此次通过ModbusTCP协议连接AC810 PLC。主要步骤包括:新建IOServer应用(需厂家协助从3.8升级至4.0)、安装ModbusTCP驱动、配置设备地址(192.168.1.88:5021)、运行IOServer并通过网页监控变量。尽管信创版操作体验较差,但出于国产化战略需要仍需使用。雷工表示理解产品初期不足,相信未来会逐步优化。2025年4月11日记录于四川绵阳

做有价值的事,积累有价值的笔记! 863

SpringBoot集成MyBatis-plus

MyBatis-Plus (opens new window)(简称 MP)是一个 MyBatis (opens new window)的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。说明:QueryWrapper(LambdaQueryWrapper) 和 UpdateWrapper(LambdaUpdateWrapper) 的父类用于生成 sql 的 where 条件, entity 属性也用于生成 sql 的 where 条件。

qq_43548590的博客 9407

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

SpringBoot如何集成mybatis-plus

type-aliases-package这个是配置实体类的包的,这样在xml里面写实体类的时候,就不需要写完整的包名+类名了,只需写类名即可。我们在使用SpringBoot的时候,毫无疑问,一般是和mybatis集成的,而mybatis-plus作为mybatis的进阶,又是必须要集成的。然后,还需要在启动类上面,加上MapperScan的注解,然后写上basePackages="",这个括号里面,写上mapper类的包名,代表要扫描的mapper类的路径。那么,你在集成的过程中有遇到什么问题呢?

会编程的蜗牛的博客 1090

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

上一篇: MyBatis-Plus代码生成器
下一篇: MyBatis-Plus 插件扩展
Flying_Fish_Xuan
Flying_Fish_Xuan 新星创作者: 后端开发技术领域 新星创作者: 后端开发技术领域
博客等级 码龄5年 1万+粉丝 2409原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Flying_Fish_Xuan

你的鼓励将是我创作最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值