当前位置: 首页 > news >正文

mybatis-plus 常用方法

selectList

importcom.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;importjava.util.List;// 假设有一个 User 实体类List<User>users=userMapper.selectList(newLambdaQueryWrapper<User>().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);

复杂条件示例

LambdaQueryWrapper<User>wrapper=newLambdaQueryWrapper<User>().eq(User::getStatus,1).and(w->w.gt(User::getAge,18).or().isNotNull(User::getEmail)).orderByDesc(User::getCreateTime).last("LIMIT 10");// 拼接原生 SQL 片段List<User>users=userMapper.selectList(wrapper);

条件动态拼接(非常实用)

Stringname="张";IntegerminAge=null;LambdaQueryWrapper<User>wrapper=newLambdaQueryWrapper<User>().eq(User::getStatus,1).like(name!=null,User::getName,name)// 条件为 true 时才拼接.gt(minAge!=null,User::getAge,minAge);// minAge 为 null,这行不会生效List<User>users=userMapper.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()

ApplyInfoModelapplyInfoModel=applyInfoService.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里方法的能力
继承 ServiceImpl<YourMapper, 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()❌ 不支持
代码简洁度一般
http://www.jsqmd.com/news/1195641/

相关文章:

  • 【电路仿真实战】基于Multisim的555双音门铃设计与频率调校全解析
  • Flink系列之:窗口聚合的进阶应用与性能调优
  • 从选型到实战:深入解析USB转串口芯片CH340的设计与应用
  • OpenClaw 2.6.6 Win10本地技能调度器零基础部署指南
  • 2026五年级语文暑假预习攻略:上册生字高清无水印可打印资料速取 - 时时资讯
  • 美度保养配件要从瑞士进口吗-解析原厂配件供应流程与时长权威公示(2026年7月最新) - 亨得利钟表维修中心
  • 车载测试培训选择指南:从CANoe实操到就业实战全解析
  • 技术社群运营:从视频引导到高质量社群构建的完整策略
  • INT102 算法核心:从伪代码到时间复杂度实战解析
  • 百达翡丽中国官方售后服务中心|官方电话和维修地址权威信息公告(2026年7月最新) - 百达翡丽服务中心
  • 19-大模型智能体开发:LangChainLangGraph是如何诞生的
  • 别再把电池拆得稀巴烂!慧寄侠整车直发,260元搞定省内短途寄车,省心更省钱 - 快递物流资讯
  • VC++仿360安全桌面开发实战:Win32 API与GDI+界面编程详解
  • 华芯微特SWM34S系列MCU 开发环境搭建与避坑指南
  • 选择外卖托管服务商:如何系统规避差评与运营风险 - 行业观察日记
  • 如何使用 Image-2 大模型生成小红书九宫格图片并自动裁切(自媒体高效搞流教程)
  • XDMA官方仿真文件解读
  • AI辅助编程工程开发问题记录
  • Qt/C++源码/地图控件/实时动态轨迹/历史轨迹回放/航线规划/性能强悍
  • centos v7无法支持高版本vscode问题
  • Python字典详解:从基础操作到高级应用与性能优化
  • 如何5分钟快速上手Pupil眼动追踪系统:完整新手入门指南
  • 2026年7月最新苏州欧米茄官方售后服务热线与网点地址查询 - 欧米茄官方服务中心
  • 经典算法实例:旋转字符串(二)
  • 提升效率必读:推荐一本真正改变时间观念的时间管理书籍
  • 系统运维排查工具“师傅”实战指南:从问题解决到思维提升
  • 抖音弹幕实时监控:5分钟轻松配置弹幕数据抓取方案
  • 基于DepGraph的结构化剪枝:重塑深度神经网络压缩的技术范式
  • function calling 和 MCP 的关系 就相当于 rag 和 微调 的关系
  • AMD Ryzen AI软件:3步让你的电脑变身AI工作站