Mybatis Plus 添加 limit 1(超详细)

更新时间 2022-12-29 12:42:27

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

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

  • 新项目:《从零手撸:仿小红书(微服务架构)》 正在持续爆肝中,基于 Spring Cloud Alibaba + Spring Boot 3.x + JDK 17...点击查看项目介绍 ;
  • 《从零手撸:前后端分离博客项目(全栈开发)》 2 期已完结,演示链接: http://116.62.199.48/ ;

截止目前, 星球 内专栏累计输出 54w+ 字,讲解图 2476+ 张,还在持续爆肝中.. 后续还会上新更多项目,目标是将 Java 领域典型的项目都整一波,如秒杀系统, 在线商城, IM 即时通讯,权限管理,Spring Cloud Alibaba 微服务等等,已有 1900+ 小伙伴加入学习 ,欢迎点击围观

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 条件构造器