mybatis-plus 常用方法

发布时间:2026/11/2 11:37:15

mybatis-plus 常用方法 selectListimportcom.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;importjava.util.List;// 假设有一个 User 实体类ListUserusersuserMapper.selectList(newLambdaQueryWrapperUser().eq(User::getId,1001)// WHERE id 1001.gt(User::getAge,18)// AND age 18.like(User::getName,张)// AND name LIKE %张%.orderByDesc(User::getCreateTime)// ORDER BY create_time DESC);复杂条件示例LambdaQueryWrapperUserwrappernewLambdaQueryWrapperUser().eq(User::getStatus,1).and(w-w.gt(User::getAge,18).or().isNotNull(User::getEmail)).orderByDesc(User::getCreateTime).last(LIMIT 10);// 拼接原生 SQL 片段ListUserusersuserMapper.selectList(wrapper);条件动态拼接非常实用Stringname张;IntegerminAgenull;LambdaQueryWrapperUserwrappernewLambdaQueryWrapperUser().eq(User::getStatus,1).like(name!null,User::getName,name)// 条件为 true 时才拼接.gt(minAge!null,User::getAge,minAge);// minAge 为 null这行不会生效ListUserusersuserMapper.selectList(wrapper);LambdaQueryWrapper方法说明示例eq(字段, 值)等于.eq(User::getId, 1)ne(字段, 值)不等于!.ne(User::getStatus, 0)gt(字段, 值)大于.gt(User::getAge, 18)ge(字段, 值)大于等于.ge(User::getAge, 18)lt(字段, 值)小于.lt(User::getAge, 60)le(字段, 值)小于等于.le(User::getAge, 60)like(字段, 值)模糊匹配LIKE %值%.like(User::getName, 张)likeLeft(字段, 值)左模糊LIKE %值.likeLeft(User::getName, 三)likeRight(字段, 值)右模糊LIKE 值%.likeRight(User::getName, 张)in(字段, 集合)IN 查询.in(User::getId, Arrays.asList(1,2,3))isNull(字段)为 NULL.isNull(User::getEmail)isNotNull(字段)不为 NULL.isNotNull(User::getEmail)orderByAsc(字段)升序.orderByAsc(User::getAge)orderByDesc(字段)降序.orderByDesc(User::getCreateTime)between(字段, 值1, 值2)区间查询.between(User::getAge, 18, 60)and(条件)嵌套 AND.and(w - w.gt(User::getAge, 18).lt(User::getAge, 60))or()OR.eq(User::getId, 1).or().eq(User::getId, 2)select(字段...)指定查询列.select(User::getId, User::getName)这些方法都是mapper层的 是mapper. 调用的在学习的时候, 发现 lambdaQuery().one()lambdaQuery().one()ApplyInfoModelapplyInfoModelapplyInfoService.lambdaQuery().eq(ApplyInfoModel::getProcessInstId,list.get(0).getProcessInstId()).one();lambdaQuery().one() 和 selectOne() 都是 MyBatis-Plus 中查询单条记录的方法但它们所属的层级不同、使用方式不同、行为也有差异。对比项lambdaQuery().one()selectOne()所属层级Service 层链式查询Mapper 层调用者继承ServiceImpl的 Service继承BaseMapper的 Mapper参数通过链式.eq()、.like()等拼接条件传入一个Wrapper对象返回值实体对象或null实体对象或null场景lambdaQuery().one()selectOne()查到 0 条返回null返回null查到 1 条返回该记录返回该记录查到 多条抛出TooManyResultsException返回第一条不抛异常继承 ServiceImpl 层的service 也具有调用mybatis-plus里方法的能力继承 ServiceImplYourMapper, YourEntity 后你的 Service 可以直接使用getOne(wrapper)// 查询单条getOne(wrapper,false)// 查询单条多条时不抛异常list(wrapper)// 条件查询列表count(wrapper)// 条件统计page(page,wrapper)// 分页查询getOne(wrapper)// 查询单条getOne(wrapper,false)// 查询单条多条时不抛异常list(wrapper)// 条件查询列表count(wrapper)// 条件统计page(page,wrapper)// 分页查询lambdaQuery()// 返回 LambdaQueryChainWrapper支持 .eq().like().one() 等链式调用lambdaUpdate()// 返回 LambdaUpdateChainWrapper支持链式更新query()// 返回 QueryChainWrapperupdate()// 返回 UpdateChainWrapper继承ServiceImpl不继承普通 Service调用 MP 方法✅ 直接调用无需注入 Mapper❌ 需要手动AutowiredMapper链式查询✅ 支持lambdaQuery()❌ 不支持代码简洁度高一般
延伸阅读

更多相关文章

2026/11/2 11:34:07

51单片机(三)独立按键消抖与状态机实战

1. 独立按键的硬件原理与抖动问题当你第一次按下51单片机开发板上的独立按键时,可能会发现LED灯会出现"闪烁"现象——明明只按了一次,灯却快速亮灭好几次。这不是程序写错了,而是所有机械按键都存在的物理抖动现象。机械按键内部有…

2026/10/26 11:01:16

STM32 HAL库串口中断回调机制深度解析与实战应用

1. STM32 HAL库串口中断回调机制解析第一次接触STM32 HAL库的串口中断时,我被各种回调函数绕得晕头转向。经过几个项目的实战,终于摸清了这套机制的门道。HAL库通过回调函数将底层硬件操作与用户代码解耦,这种设计既保持了库的通用性&#xf…

2026/10/24 7:01:23

怎么用AI选股:从写第一行Prompt到筛出标的的步步详解

搜"AI选股怎么操作"的,不是来看AI能不能选股的。是想知道明天打开电脑之后第一步该干嘛。这篇文章给一套能照着做的流程——用什么工具、怎么提问、怎么验证AI推的票靠不靠谱。 一、先用最笨的方式试一次——看看AI选股到底什么水平 先别研究Prompt技巧。…

2026/11/2 11:36:08

JavaFX简易音乐播放器:5分钟上手MP3播放与UI控制

简介:这是一份基于JavaFX开发的轻量级音乐播放器开源项目,面向Java初学者与GUI编程入门者,帮助理解桌面应用界面构建、音频控制逻辑及MVC结构实践。资源包共35个文件,包含8个核心Java源码(含主程序与控制器类&#xff…

2026/11/2 11:36:08

AI辅助科研数据分析:从数据清洗到可视化洞察

1. 项目概述:当科研数据分析遇上AI辅助工具第一次看到"虎贲等考AI"这个工具名称时,我正被一堆电镜图像数据折磨得焦头烂额。作为实验室里最年轻的成员,导师扔给我一组三年的实验数据说:"下周组会做个初步分析"…

2026/11/2 11:36:08

岚图汽车IPO:央企新能源转型的武汉模式

1. 岚图上市:央企背景下的新能源汽车突围战 2023年12月,岚图汽车正式登陆香港交易所,成为国内首个实现IPO的央企高端新能源汽车品牌。这个由东风汽车集团孵化而来的新能源项目,从2018年立项到成功上市仅用5年时间,其发…

2026/11/2 11:36:08

PHP+Swoole+Redis实现高可靠延时消息队列

简介:本资源是一套基于PHPSwooleRedis实现的高性能延时消息队列消费系统,面向中高级PHP后端开发者及高并发场景下的消息中间件实践者,解决传统单进程轮询延迟高、吞吐低、资源占用大等痛点。系统采用Redis Sorted Set存储带时间戳的消息&…

2026/11/2 11:36:08

Selenium自动化测试入门与实战指南

1. Selenium自动化测试入门指南概述 作为一名在测试领域摸爬滚打多年的老手,我深知自动化测试对于现代软件开发的重要性。Selenium作为最主流的Web自动化测试工具,几乎成为了测试工程师的标配技能。但很多新手在学习过程中常常会遇到各种坑,比…

2026/11/2 11:31:07

双馈风力发电系统控制策略与MPPT实现详解

1. 双馈风力发电系统概述与核心架构 双馈感应发电机(DFIG)系统作为现代风力发电的主流解决方案,其核心优势在于允许发电机转速在30%范围内波动时仍能保持恒频输出。这个特性使得系统能够更高效地捕获风能,特别是在风速变化频繁的场…

2026/11/2 6:08:01

面向复杂光照与角度的宠物面部识别鲁棒性增强策略

在智慧养宠时代,基于视觉的宠物身份识别技术正逐步从实验室走向家庭应用。然而,与配合度高的人类不同,宠物是典型的“非合作生物识别对象”——它们不会主动配合摄像头调整姿态,更无法控制光照环境。实际应用中,我们常…

2026/11/2 6:39:12

SSM电子书店源码全解析:结构、原理、部署与排错实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/11/2 1:04:04

工业级SPI隔离设计:硬件抗扰与信号完整性实战指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/11/2 1:04:04

PLFM_RADAR:主动探测数据通道,构建低误报的数据感知系统

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/11/2 1:04:04

工业SPI隔离设计:MAX14431与STM32F746硬件抗干扰实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/11/2 6:08:01

面向复杂光照与角度的宠物面部识别鲁棒性增强策略

在智慧养宠时代,基于视觉的宠物身份识别技术正逐步从实验室走向家庭应用。然而,与配合度高的人类不同,宠物是典型的“非合作生物识别对象”——它们不会主动配合摄像头调整姿态,更无法控制光照环境。实际应用中,我们常…

2026/11/2 6:39:12

SSM电子书店源码全解析:结构、原理、部署与排错实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑