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

MyBatis-Plus条件构造器详解及应用

MyBatis-Plus 是一个 MyBatis 的增强工具

  • QueryWrapper:构建查询的工具
  • UpdateWrapper:用于构造更新条件
  • LambdaQueryWrapper:这是一个基于 Lambda 表达式的查询条件构造器,调用使用的实体类属性的get方法,使用比较灵活,避免了硬编码
  • LambdaUpdateWrapper:基于 Lambda 表达式的更新条件构造器
    这篇文章针对QueryWWrapper进行应用

QueryWrapper

//通过实例化进行使用,无条件查询传递null即可QueryWrapper<查询的实体类名>queryWrapper=newQueryWrapper<>();

排序

//升序queryWrapper.orderByAsc("列名");//降序queryWrapper.orderByDesc("列名");//排序 queryWrapper.orderBy(boolean condition, boolean isAsc, R... columns)//condition 是否使用该排序条件//isAsc 升序还是降序,升序true 降序false//columns 按照哪一列进行排序 也可以是多个列queryWrapper.orderBy(true,true,"列名1","列名2");

模糊查询

//likequeryWrapper.like("列名","模糊查询内容");//not likequeryWrapper.notLike("列名","模糊查询内容");//右模糊queryWrapper.likeLeft("列名","模糊查询内容");//左模糊queryWrapper.likeRight("列名","模糊查询内容");//非右[左]模糊匹配条件queryWrapper.notLikeLeft[notLikeRight]("列名","模糊查询内容");

等值查询

//列名等于(eq)/不等于(ne)/大于(gt)/大于等于(ge)/小于(lt)/小于等于(le)值queryWrapper.eq("列名",);//区间查询 betweenqueryWrapper.between("列名",起始值,结束值);//notBetweenqueryWrapper.notBetween("列名",起始值,结束值);

集合匹配查询

//in -- 在指定集合中queryWrapper.in("列名",1,2,3);//notIn -- 不在指定集合中queryWrapper.notIn("列名",1,2,3);

指定查询列

queryWrapper.select("列名1","列名2",...);

子查询

//exists(String existsSql) sql语句子查询queryWrapper.exists("select 字段 from 表名 where 条件")...其他查询条件;//notExistsqueryWrapper.notExists("select 字段 from 表名 where 条件");

或、与

//一种连接方式,将前后条件连接到一起 or/andqueryWrapper.查询条件1.or[and]().查询条件2;

分组查询

//groupBy 进行分组queryWrapper.groupBy("分组字段名");//select需要查询的字段queryWrapper.select("字段1, count(1) 统计总数, avg(字段) 平均值,......");//分组后的筛选条件queryWrapper.having("条件")

分页查询

importcom.baomidou.mybatisplus.core.metadata.IPage;//通过IPage进行分页实现QueryWrapper<实体类>wrapper=newQueryWrapper<>();wrapper.orderByAsc("排序字段名");//分页条件IPage<实体类>page=newPage<>();page.setCurrent(1);//当前页page.setSize(5);//每页条数//查分页IPage<实体类>pageResult=employeeMapper.selectPage(page,wrapper);//当前页数据List<实体类>records=pageResult.getRecords();

注意:实现分页需要额外添加一个bean,可以直接放在启动类中,也可以单独存在文件中

//分页配置@BeanpublicMybatisPlusInterceptormybatisPlusInterceptor(){MybatisPlusInterceptorinterceptor=newMybatisPlusInterceptor();// 分页插件,指定数据库类型PaginationInnerInterceptorpaginationInnerInterceptor=newPaginationInnerInterceptor(DbType.MYSQL);// 常用配置项// false:超出最大页返回空;true:回到第一页paginationInnerInterceptor.setOverflow(false);// 单页最大条数,防止一次性查大量数据paginationInnerInterceptor.setMaxLimit(1000L);// join优化,针对 COUNT 查询的 JOIN 优化策略,提升性能paginationInnerInterceptor.setOptimizeJoin(true);interceptor.addInnerInterceptor(paginationInnerInterceptor);returninterceptor;}
http://www.jsqmd.com/news/1291905/

相关文章:

  • ARM Cortex-M DWT定时器:高精度性能分析与微秒延时实战
  • 电力电子技术核心:从四大变换到300W LED驱动电源实战设计
  • Matlab中A*算法仿真:从高效实现到系统集成实践
  • AI框架优化对模型性能的影响:Harness框架提升GPT-5.5实战解析
  • heic转jpg:扫描件格式不对时按问答清单逐项排查 - 办公小帮手
  • 设备管理系统迁移改造:从手工台账到二维码数字化的实践路径
  • Linux C语言第九天学习笔记:二维数组与函数
  • 数组排序与
  • 终极指南:一键永久保存QQ空间十年青春记忆的免费开源工具
  • 浏览器隐私守护者:uBlock Origin如何重塑您的网络体验
  • DLSS Swapper终极指南:如何一键升级游戏DLSS版本提升性能
  • 逆向实战:深度解析抖音a_bogus参数JSVMP保护与算法还原
  • 深入解析RS-232/422/485串口通信:从差分信号到Modbus实战
  • 别再盲目选!2026年AI论文写作工具红黑榜,选对工具少走弯路
  • 深入Linux USB Hub驱动:从原理到调试,解决设备识别与枚举问题
  • Go-Micro微服务安全终极实践:从认证授权到数据加密的纵深防御
  • Wireshark网络抓包实战:从TCP三次握手到HTTPS解密
  • 5步掌握BilibiliDown:轻松下载B站Hi-Res无损音频的终极方案
  • 从零搭建规范STM32工程:CubeMX配置与Keil分层架构实战
  • Unity天空盒制作:从全景图到Cubemap的完整实现
  • 玉石复检全流程教学:新手也能自主验货、维权有据
  • 无审查模型与国内通用模型对比
  • KKCE:在线Ping 工具多场景应用与实战指南-快快测
  • Windows下CPython 3.12.1源码编译与调试环境搭建指南
  • 海阳市防水补漏_2026山东东部黄海之滨核电名城漏水维修价格行情与五大正规团队推荐 - 雨婺虹房屋维修
  • 漏洞挖掘趋势:符号执行与 Fuzzing 的融合路径
  • X-AnyLabeling终极指南:免费高效的AI图像标注工具,10倍提升标注效率
  • Qt程序调试实战:内存管理、线程安全与资源访问崩溃排查指南
  • 校园问卷调查与数据分析平台的设计与实现
  • 本地代码大模型评测实战(四):8个坑和1个崩溃