Mybatis Plus 添加 limit 1(超详细)


一则或许对你有用的小广告

欢迎加入小哈的星球,你将获得:专属的实战项目(4个项目都能学) / 1v1 提问 / 简历修改 / Java 学习路线 / 社群讨论 / 学习打卡 / 每月赠书

  • 《Spring AI 项目实战(问答机器人、RAG 智能客服、联网搜索)》已完结,基于 Spring AI + Spring Boot 3.x + JDK 21...查看介绍

  • 《从零手撸:仿小红书(微服务架构)》 已完结,基于 Spring Cloud Alibaba + Spring Boot 3.x + JDK 17...查看介绍;演示链接:http://116.62.199.48:7070/

  • 《从零手撸:前后端分离博客项目(全栈开发)》 2 期已完结,演示链接:http://116.62.199.48/

  • 新开坑项目:《从零手撸:秒杀系统高并发优化实战》 正在更新中...,查看介绍

截止目前,星球内专栏累计输出 150w+ 字,讲解图 5110+ 张,还在持续爆肝中.. 后续还会上新更多项目,已有 4700+ 小伙伴加入学习,欢迎点击围观

Mybatis Plus Wrapper 条件构造器

前言

大家好,我是小哈。

工作中编写 SQL 时,合理使用 limit 1 能够有效提升 SQL 的执行效率,举个场景,比如想判断用户表中是否存在年龄为 30 的记录,需求为判断是否存在,那么 SQL 的条件为 where age = 30 limit 1 即可。那么,Mybatis Plus 中如何添加 limit 1 呢?

代码示例

这就需要使用到 last() 方法,它是 AbstractWrapper 抽象类中定义的方法,官网上对该方法的说明是: 无视优化规则直接拼接到 SQL 的最后。很好理解,具体来看看代码示例:

// 组装查询条件
QueryWrapper<User> wrapper = new QueryWrapper<>();
wrapper.select("id");
wrapper.eq("age", 30);
// 将 limit 1 添加到 SQL 最后
wrapper.last("limit 1");

// 实际执行 SQL : SELECT id FROM user WHERE (age = 30) limit 1
userMapper.selectOne(wrapper);

注意点

该方法只能调用一次, 多次调用以最后一次为准,另外,它有 SQL 注入的风险, 需谨慎使用。

Mybatis Plus Wrapper 条件构造器