
mybatis-plus 开发利器 ,再也不用写单表CRUD的重复代码了!
无侵入性:MyBatis-Plus 在 MyBatis 的基础上扩展,不会对现有 MyBatis 架构造成任何影响,支持所有 MyBatis 原生特性。 依赖少:仅依赖 MyBatis 及其核心插件 MyBatis-Spring。 性能损耗小:启动时自动注入基本 CURD 功能,几乎无性能损耗。 通用 CRUD 操作:内置通用 Mapper 和 Service,通过简单配置即可完成大部分 CRUD 操作。 多种主键策略:支持多达4种主键生成方式,包括分布式唯一ID生成器。 支持 ActiveRecord:实体类只需继承 Model 类即可实现基本 CRUD 操作。 代码生成:支持通过代码或 Maven 插件快速生成 Mapper、Model、Service 和 Controller 层代码,功能强大。 通用操作:支持自定义全局通用方法注入,可在需要的地方灵活使用。 内置插件:包括分页、性能分析和全局拦截插件,提升开发体验。
Wrapper:最顶端父类,提供4个核心方法( AbstractWrapper:用于封装查询条件,生成 SQL 的 AbstractLambdaWrapper:处理 Lambda 语法,解析 Lambda 表达式获取字段。 LambdaQueryWrapper:专门用于 Lambda 语法的查询操作。 LambdaUpdateWrapper:用于 Lambda 语法的更新操作。 QueryWrapper:基于实体对象的封装操作,支持非 Lambda 语法。 UpdateWrapper:用于封装更新操作的条件。
MyBatis-Plus 官方文档 MyBatis-Plus GitHub 仓库
发布日期:2025-04-14 08:54:21
浏览次数:12
分类:精选文章
本文共 4864 字,大约阅读时间需要 16 分钟。
一、什么是 MyBatis-Plus?
MyBatis-Plus 是 MyBatis 的一个增强工具包,专注于在不改变 MyBatis 基础架构的前提下,提供更强大的功能。它的目标是简化 CRUD(增删改查)操作,同时保留 MyBatis 原生的所有特性。
MyBatis-Plus 的优势:
二、MyBatis-Plus 官网
更多详细文档和使用指南可以参考 MyBatis-Plus 官网。
三、MyBatis-Plus 的 Wrapper 统一管理系统
Wrapper 继承图
Wrapper
是 MyBatis-Plus 中最顶端的抽象类,主要用于构造查询和更新条件。以下是其核心子类:
eq
、ne
、ge
、le
等)。WHERE
部分。Wrapper 的使用示例
// 1. 非 Lambda 语法QueryWrapperqueryWrapper = new QueryWrapper<>(userEntity);queryWrapper.eq("name", "张三");queryWrapper.ge("age", "18");...// 2. Lambda 语法LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(userEntity);lambdaQueryWrapper.eq(User::getName, "张三");lambdaQueryWrapper.ge(User::getAge, "18");// 3. 自定义封装lambdaQueryWrapper.eq(User.builder().getName("张三").getAge(18).build());
Wrapper 的核心函数
Wrapper
类及其子类提供了丰富的方法,用于构造查询和更新条件。以下是常用函数示例:
eq(String column, Object value)
:等于的条件构造。ge(String column, Object value)
:大于等于的条件构造。le(String column, Object value)
:小于等于的条件构造。ne(String column, Object value)
:不等于的条件构造。update()
:开启更新操作。set(String column, Object value)
:设置更新字段。
四、代码实战示例
1. 项目依赖
在 Spring Boot 项目中添加以下依赖:
org.springframework.boot spring-boot-starter mysql mysql-connector-java runtime org.springframework.boot spring-boot-starter-test test org.junit.vintage junit-vintage-engine org.project.lombok lombok true com.baomidou mybatis-plus-boot-starter 3.4.1
2. 数据库配置
在 application.properties
中添加以下配置:
# 数据库配置spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driverspring.datasource.url=jdbc:mysql://localhost:3306/mybatis-plus?serverTimezone=UTC&characterEncoding=UTF-8spring.datasource.username=rootspring.datasource.password=123456# MyBatis-Plus 配置mybatis-plus.mapper-locations=classpath*:/mappers/*.xmlmybatis-plus.typeAliasesPackage=com.ratel.mp.entity# SQL 日志mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
3. 代码结构
package com.ratel.mp;import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;import com.baomidou.mybatisplus.core.toolkit.Wrappers;import com.ratel.mp.entity.User;import com.ratel.mp.service.UserService;import org.junit.jupiter.api.Test;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.boot.test.context.SpringBootTest;import java.util.List;@SpringBootTestpublic class MpApplicationTests { @Autowired private UserService userService; @Test void queryTest() { // 1. 普通写法 ListuserList = userService.list(Wrappers. (query().eq("id", 1))); // 2. Lambda 语法 List list = userService.list(Wrappers. (lambdaQuery().eq(User::getId, 1))); // 3. 自定义 Lambda 构造 List list2 = userService.list(Wrappers. (lambdaQuery(User.builder().getId(1).build()))); } @Test void saveTest() { boolean success = userService.save(User.builder().name("张三").age(18).email("zhangsan@qq.com").build()); System.out.println("保存结果:" + success); } @Test void updateTest() { User user = User.builder().name("张三").age(20).email("zhangsan@qq.com").build(); boolean success = userService.update(user, Wrappers. (update().eq("id", 13))); System.out.println("更新结果:" + success); } @Test void deleteTest() { boolean success = userService.removeById(14); System.out.println("删除结果:" + success); boolean success2 = userService.removeById(-1); System.out.println("删除不存在的数据结果:" + success2); } @Test void myGetByIdTest() { User user = userService.myGetById(1); System.out.println("获取单个用户结果:" + user); } }
五、参考文章
发表评论
最新留言
不错!
[***.144.177.141]2025年05月20日 12时41分14秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
MacBook键盘突然失灵?这几个排查步骤一定要试试!
2025-04-11
Macbook风扇突然一直狂转?一文搞定各种可能原因
2025-04-11
MacBook黑屏/白屏开不了机?一文搞定所有可能的解决方案!
2025-04-11
Machine Learning in Action -- 树回归
2025-04-11
macOS Big Sur 11.0.1 上未弹出应用程序
2025-04-11
MacOS:创建目录出现 Read-only file system
2025-04-11
macOS系统上安装JDK
2025-04-11
MacType Decency 项目常见问题解决方案
2025-04-11
Mac下IDEA更换Maven仓库
2025-04-11
Mac下MySQL 报错:Error1045(28000)解决办法
2025-04-11
Mac下redis安装和启动
2025-04-11
Mac下各种网络命令的使用
2025-04-11
Mac下如何配置环境变量
2025-04-11
Mac下安装jdk
2025-04-11
Mac下安装PEAR
2025-04-11
mac下安装配置nginx
2025-04-11
Mac下忘记MySQL密码可以这样做!
2025-04-11
Mac下配置多个SSH-Key (gitLab)
2025-04-11