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

MybatisPlus------条件构造器Wrapper以及QueryWrapper用法(七)

MybatisPlus------条件构造器Wapper(七)

在这里插入图片描述
Wrapper:条件构造器抽象类,最顶端父类
AbstarctWrapper:用于查询条件封装,生成sql的where条件。
QueryWrapper:查询条件封装(可以用于查询、删除,更新)
UpdateWrapper:Update条件封装
AbstractLambdaWrapper:使用Lambda语法
LambdaUpdateWrapper:用于Lambda语法使用的查询Wrapper
LambdaQueryWrapper:用于Lambda语法使用的更新Wrapper

使用QueryWrapper进行更新

        @Testpublic void testUpdate(){// 将(年龄大于20,并且用户名中包含有a)或邮箱为null的信息修改//where条件QueryWrapper<BaseProcedure> baseProcedureQueryWrapper = new QueryWrapper<>();baseProcedureQueryWrapper.gt("age",20).like("procedure_name","a").or().isNull("eamil");//更新值BaseProcedure baseProcedure = new BaseProcedure();baseProcedure.setProcedureName("asdasd");int update = baseProcedureMapper.update(baseProcedure, baseProcedureQueryWrapper);System.out.println("update"+update);}

涉及到条件优先级怎么处理?

涉及到where子句后判断的优先级时(lambda中的条件优先执行),
例如:
将用户名中包含有a并且(年龄大于20或邮箱为null)的信息修改

@Testpublic void testUpdate2(){// 将用户名中包含有a并且(年龄大于20或邮箱为null)的信息修改//where条件//涉及到lambda表达式,lambda中的条件优先执行QueryWrapper<BaseProcedure> baseProcedureQueryWrapper = new QueryWrapper<>();baseProcedureQueryWrapper.like("procedure_name","a").and(i ->{i.gt("age",20).or().isNull("eamil");});//更新值BaseProcedure baseProcedure = new BaseProcedure();baseProcedure.setProcedureName("asdasd");int update = baseProcedureMapper.update(baseProcedure, baseProcedureQueryWrapper);System.out.println("update"+update);}

and()和or()中的Consumer怎么理解?

and()方法源码:

/*** 查询条件封装* <p>嵌套</p>* <li>泛型 Param 是具体需要运行函数的类(也是 wrapper 的子类)</li>** @author hubin miemie HCL* @since 2017-05-26*/
public interface Nested<Param, Children> extends Serializable {/*** ignore*/default Children and(Consumer<Param> consumer) {return and(true, consumer);}

Param是泛型,是具体需要运行函数的类,也就是 wrapper 的子类,就是条件构造器,因此可以将条件构造器写入and方法中。
而Consumer,是Lambda表达式中的消费者接口,消费者接口中一定是由参数的,方法中的内容就是我们对参数的操作方式,

仅需要查询部分字段如何写?

通过调用QueryWrapper的select()方法,在该方法里传入需要查询的字段即可。

    @Testpublic void testSelect(){//查询用户用户名,和用户编码QueryWrapper<BaseProcedure> baseProcedureQueryWrapper = new QueryWrapper<>();baseProcedureQueryWrapper.select("procedure_code","procedure_name");List<Map<String, Object>> maps = baseProcedureMapper.selectMaps(baseProcedureQueryWrapper);maps.forEach(System.out::println);}

子查询如何操作

通过inSql方法,传入字段,以及子查询sql即可。
案例比较简单,仅仅用来测试,无实际意义

    @Testpublic void testSelect02(){//子查询//SELECT * from base_procedure//WHERE id = (SELECT  id from base_procedure WHERE id = 'ef5397a26b7a469c6fe1de0e')QueryWrapper<BaseProcedure> baseProcedureQueryWrapper = new QueryWrapper<>();baseProcedureQueryWrapper.inSql("id","SELECT  id from base_procedure WHERE id = 'ef5397a26b7a469c6fe1de0e'");List<Map<String, Object>> maps = baseProcedureMapper.selectMaps(baseProcedureQueryWrapper);maps.forEach(System.out::println);}
http://www.lryc.cn/news/10960.html

相关文章:

  • NetSuite Intercompany Framework 101
  • 限时活动|凭徽章领披萨大奖,玩转Moonbeam治理论坛
  • Golang中struct{}和struct{}{}的区别你知道吗?
  • 网络安全-信息收集- 谷歌浏览器插件收集信息,谷歌hacking搜索语法-带你玩不一样的搜索引擎
  • 基础篇—一文掌握css的边框属性
  • 05服务发现:引入etcd服务注册中心
  • Pdfium.Net SDK 4.78.2704 完美Crack/Ptach
  • 再学C语言38:指针操作
  • 【论文Word排版】使用多级列表设置论文序号
  • 分支管理方案
  • Allegro走线时如何自动关闭其它网络飞线显示操作指导
  • Linux中常用命令汇总二
  • 【数据结构】排序算法
  • [MySQL]初识数据库
  • XXL-JOB分布式任务调度框架(二)-路由策略
  • Java_Maven:5. 把第三方 jar 包放入本地仓库或私服
  • 【剑指offer】03~05. 数组中的数字(C# 实现)
  • Docker入门教程
  • I2C总线应用测试程序
  • 主从表的建立
  • Exporter介绍与指标数据,规范说明(更新中)
  • [Android Studio] Android Studio Virtual Device虚拟机的功能试用
  • 华为OD机试 - 检查数组中是否存在满足规则的数组组合1(Python)
  • 深圳“托育”放大招!政府出钱帮你带娃啦!
  • 服务间调用方式 OpenFeign 的介绍和使用
  • 从开始测试到年薪40W,我的自动化测试艰辛历程
  • 《C++ Primer Plus》第17章:输入、输出和文件(1)
  • 静态代码审计插件 snyk 使用教程
  • 从“服务”,到“赋能”,日日顺再次定义供应链生态建设
  • MySQL(一):B+ Tree,索引以及其优点, 索引实战, 聚簇索引和非聚簇索引, 最左匹配,索引失效