一、前言

mybatis-plus提供了强大的条件构造器。这里简要介绍了条件构造器的结构与关系,并通过简要的示例描述查询、删除和修改操作的条件构造器实现方式。

二、条件构造器结构


备注

  • 绿色框为抽象类abstract
  • 蓝色框为正常class类,可new对象
  • 黄色箭头指向为父子类关系,箭头指向为父类
  • Wrapper : 条件构造父类。
  • AbstractWrapper :QueryWrapper(LambdaQueryWrapper)和UpdateWrapper(LambdaUpdateWrapper) 的父类用于生成 sql 的 where 条件, entity 属性也用于生成 sql 的 where 条件。
  • AbstractLambdaWrapper :Lambda 语法使用 Wrapper统一处理解析 lambda 获取 column。
  • LambdaQueryWrapper :Lambda形式的查询Wrapper。
  • LambdaUpdateWrapper :Lambda 形式的更新Wrapper。
  • QueryWrapper :继承自 AbstractWrapper ,自身的内部属性 entity 也用于生成 where 条件
    及 LambdaQueryWrapper, 可以通过 new QueryWrapper().lambda() 方法获取。
  • UpdateWrapper : 继承自 AbstractWrapper ,自身的内部属性 entity 也用于生成 where 条件
    及 LambdaUpdateWrapper, 可以通过 new UpdateWrapper().lambda() 方法获取。

注意: entity 生成的 where 条件与 使用各个 api 生成的 where 条件没有任何关联行为。

三、sql拼接方法

四、示例

  1. 查询
//查询第一条纪律
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("name", "lld");
User user = mapper.selectOne(queryWrapper);//查询总记录数
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("name", "lld");
Integer count = mapper.selectCount(queryWrapper);//查询所有记录:返回实体列表 List<user>
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("name", "lld");
List<User> list=mapper.selectList(queryWrapper );//查询所有记录:返回map列表 List<Map<String,Object>>
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("name", "lld");
List<User> list=mapper.selectMaps(queryWrapper);//查询所有记录并翻页:返回Ipage<entity>
Page<User> page = new Page<>(1, 5);
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
IPage<User> userIPage = mapper.selectPage(page, queryWrapper);//查询所有记录并翻页:返回Ipage<Map<String, Object>>
Page<User> page = new Page<>(1, 5);
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
IPage<Map<String, Object>> mapIPage = mapper.selectMapsPage(page, queryWrapper);//查询所有记录:lambda
LambdaQueryWrapper<User> lambdaQuery=Wrappers.<User>lambdaQuery();
lambdaQuery.likeRight(User::getName,"杨").and(lqw->lqw.lt(User::getAge,40).or().isNostNull(User::getEmail));
List<User> userList=userMapper.selectList(lambdaQuery);
userList.forEach(System.out::println)//查询所有记录:chain
List<User> userList=new LambdaQueryChainWrapper<User>(userMapper).like(User::getName,"杨").ge(User::getAge,20).list();
  1. 更新
//形式一:wrapper
UpdateWrapper<User> updateWrapper=new UpdateWrapper<User>();
updateWrapper.eq("id",1);
User user=new User()
user.setName("张三");
int result=baseMapper.update(user,updateWrapper);//形式二:whereWrapper
User whereUser=new User();
whereUser.setId(1);
UpdateWrapper<User> updateWrapper=new UpdateWrapper<User>(whereUser);
User user=new User()
user.setName("张三");
int result=baseMapper.update(user,updateWrapper);//形式三:lambda
LambdaUpdateWrapper<User> lambdaUpdateWrapper=Wrappers.<User>lambdaUpdate();
lambdaUpdateWrapper.eq(User::getId,1).set(User::getName,"张三");
int result=baseMapper.update(null,lambdaUpdateWrapper);//形式四:链式
boolean update=new LambdaUpdateChainWrapper<User>(userMapper).eq(User::getId,1).set(User::getName,"张三").update();
  1. 删除类似于2,以下只举一个示例。
LambdaQueryWrapper<User> lambdaQuery=Wrappers.<User>lambdaQuery();
lambdaQuery.eq(User::getAge,27).or().gt(User::getAge,41);
int rows=userMapper.delete(lambdaQuery);
  1. 补充
//分页插件
@Configuration
public class MybatisPlusConfig{@Beanpublic PaginationInterceptor paginationInterceptor() {return new PaginationInterceptor();}
}

五、参考

https://mybatis.plus/
https://blog.csdn.net/m0_37034294/article/details/82917234
https://www.cnblogs.com/liuyangfirst/p/9739063.html

Mybatis-Plus条件构造器相关推荐

  1. mybatis plus 条件构造器queryWrapper学习

    mybatisPlus官网地址:简介 | MyBatis-Plus为简化开发而生https://mp.baomidou.com/guide/ 一.queryWrapper是什么 queryWrappe ...

  2. SpringBoot项目集成Mybatis Plus(五)条件构造器

    Mybatis Plus 提供了强大的条件构造器,在不写sql映射文件的情况下,完成复杂的查询和修改数据的操作. 条件构造器用于生成sql的where条件,包括 QueryWrapper, Updat ...

  3. mybatis plus条件拼接

    mybatis plus条件拼接 条件构造器 案例table AbstractWrapper allEq:全部eq(或个别isNull) eq:等于 = ne:不等于 <> gt:大于 & ...

  4. 第 4 章 MybatisPlus 条件构造器

    第 4 章 MybatisPlus 条件构造器 1.CRUD API 的思考 对于 BaseMapper 中基本 CRUD 方法的思考 继承了 BaseMapper 接口后,我们只能获得基本的 CRU ...

  5. Java中使用es条件构造器BoolQueryBuilder

    前言 由于es在java中查询没法像mybatis那样方便,而且es的构造器使用也比较繁琐,理解不是很方便,所以写一篇文章来记录es构造器BoolQueryBuilder查询时各种条件的构造的正确姿势 ...

  6. MyBatisPlus 中常用的 条件构造器(LambdaQueryWrapper、LambdaUpdateWrapper)使用

    LambdaQueryWrapper LambdaQueryWrapper 是查询条件过滤器,需要查询数据时使用. 案例如下: /*** 根据条件查询分类数据,例如:根据type = 1来查询菜品分类 ...

  7. Mybatis-Plus实战中的几个条件构造器Wrapper用法

    Mybatis-Plus实战中的几个条件构造器Wrapper用法 其实Wrapper有很多其他的方法,组合起来也是殊途同归,大家可以自己点开源码去查看一些方法的使用说明 @Testvoid conte ...

  8. MyBatis-Plus Day2 Wapper 核心功能 条件构造器 测试

    MyBatis-Plus Day2 核心功能 条件构造器 之前搭建的在上一篇博客中已经写好了. 链接:https://blog.csdn.net/weixin_45821811/article/det ...

  9. MyBatisPlus3.x中使用条件构造器查询某一天的记录数时的日期格式化注意

    场景 前端传过来时间,比如是'2019-05-09' 后台使用条件构造器查询数据库中某一天的记录数. 因为涉及到时间格式的问题,如果直接用时间字段是否相等来判断则不行.所以这里使用MyBatisPlu ...

  10. MyBatisPlus条件构造器Condition的用法

    场景 项目搭建专栏: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/column/info/37194 基础搭建: https://blog.csdn.net/B ...

最新文章

  1. anaconda安装scrapy失败的解决方法(2020.7.7)
  2. XLS封装成EXE制作全攻略
  3. pandas将字典转换成dataframe,两重字典
  4. valgrind工具使用详解
  5. Chrome用户不喜新版:宁用其他浏览器也不要用旧版本
  6. CDN缓存服务器现状
  7. 设计模式:高性能IO之Reactor模式
  8. Spring配置redis(自定义方法)
  9. 转:《潜伏》映射办公室潜规则
  10. LINUX下载编译OpenSSL
  11. oracle删除临时会话表,新一代QQ群机器人
  12. 计算机主机前声音口怎么设置吗,电脑前面的插孔没声音怎么设置
  13. 关于163邮箱,上传附件,本地验证文件大小的问题。
  14. Java招聘网站源码+页面
  15. 通过经纬度计算两点直线距离的计算方法
  16. 在bluehost如何使用WHM面板和ssh链接添加附加IP
  17. html提取正文,网页正文提取工具Readability
  18. Mac OS X Lion 系统中检测 WiFi 信号强度
  19. Spark任务的某个Stage卡住不动问题
  20. 【全志R329-NPU助力】Maix-Speech为嵌入式环境设计的离线语音库

热门文章

  1. Java技术体系简介
  2. 计算机的选材标准,GBT26642-2011无损检测金属材料计算机射线照相检测方法国家标准.pdf...
  3. cad图纸问号怎么转换文字_CAD打开图纸后为什么文字显示为问号?怎么解决?
  4. 【学习笔记】C# 动态系统托盘图标的实现 - NotifyIcon控件
  5. Visio应用视频教程(上)-游峰-专题视频课程
  6. Photoshop实例视频教程
  7. javaSE(完整版)
  8. nutch mysql hadoop_nutch+hadoop 配置使用
  9. Access数据库对象包括哪六个?Access与 Excel 最重要的区别是什么?
  10. 基于matlab的倒立摆设计,基于MATLAB的倒立摆系统控制系统设计与仿真.doc