MyBatis-Plus实现条件查询的三种格式例举详解

 更新时间:2022年08月16日 17:02:55   作者:lxrqiyuan  
本文主要介绍了MyBatis-Plus三中条件查询格式的示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

常规格式

常规格式即创建一个Wrapper的实现类QueryWrapper对象,将其传给selectList方法内部

		QueryWrapper qw = new QueryWrapper();
		//lt是小于,id小于5
		qw.lt("id",5);
		List<User> users = userDao.selectList(qw);
		System.out.println(users);

qw中的两个参数分别是数据库中的字段名id,查询的条件id<5。查询结果:

链式编程格式

若是多个条件,即小于多少并且等于多少,那就要用到链式编程

		QueryWrapper qw = new QueryWrapper();
		//大于2小于5
		qw.lt("id",5).gt("id",2);
		List<User> users = userDao.selectList(qw);
		System.out.println(users);

查询结果为:

lambda格式(推荐)

lambda格式又分为两种形式。使用时必须带上泛型

第一种仍然是使用QueryWrapper的对象

		QueryWrapper<User> qw = new QueryWrapper<User>();
		//lt是小于,id小于5
		qw.lambda().lt(User::getId,5);
		List<User> users = userDao.selectList(qw);
		System.out.println(users);

第二种就是直接使用LambdaQueryWrapper

		LambdaQueryWrapper<User> lqw = new LambdaQueryWrapper<>();
		//2-5,即3,4
		lqw.lt(User::getId,5).gt(User::getId,2);
		//上面是并且,下面是或
		//lqw.lt(User::getId,2).or().gt(User::getId,5);
		List<User> users = userDao.selectList(lqw);
		System.out.println(users);

条件查询null判定

你有没有想过为什么需要null判定?我们后端都是接收前端传来的数据来进行条件查询,并不是直接给个数据。

有这么一个情景:我们都上网买过东西吧,右上角会有一个筛选的选项,里面会有接受的最高价和最低价,我们并不是都会去填写这些信息,那么这些数据后端获取的时候就为空了,这时候我们就需要判。

当然我们可以使用 if 来判断,但是这样就不太友好。lt和gt两个方法都有两种不同的重载方法,我们上面使用的是第一种。

  //模拟获取前端的数据
		//UserQuery是User的继承类,这样既可以模仿id的上下限
        UserQuery uq = new UserQuery();
        uq.setId(7);
        uq.setId2(3);
        LambdaQueryWrapper<User> lqw = new LambdaQueryWrapper<>();
        lqw.lt(null!=uq.getId(),User::getId, uq.getId())
				.gt(null!=uq.getId2(),User::getId, uq.getId2());
        List<User> users = userDao.selectList(lqw);
        System.out.println(users);

最终结果:

到此这篇关于MyBatis-Plus实现条件查询的三种格式例举详解的文章就介绍到这了,更多相关MyBatis-Plus条件查询内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 详解ArrayBlockQueue源码解析

    详解ArrayBlockQueue源码解析

    这篇文章主要介绍了ArrayBlockQueue源码解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-04-04
  • Java实现解析.xlsb文件的示例代码

    Java实现解析.xlsb文件的示例代码

    这篇文章主要为大家详细介绍了Java实现解析.xlsb文件的相关方法,文中的示例代码讲解详细,具有一定的借鉴价值,感兴趣的可以了解一下
    2023-01-01
  • springboot在filter中如何用threadlocal存放用户身份信息

    springboot在filter中如何用threadlocal存放用户身份信息

    这篇文章主要介绍了springboot中在filter中如何用threadlocal存放用户身份信息,本文章主要描述通过springboot的filter类,在过滤器中设置jwt信息进行身份信息保存的方法,需要的朋友可以参考下
    2024-07-07
  • SpringMvc定制化深入探究原理

    SpringMvc定制化深入探究原理

    SpringMVC是一种基于Java,实现了Web MVC设计模式,请求驱动类型的轻量级Web框架,即使用了MVC架构模式的思想,将Web层进行职责解耦,这篇文章主要介绍了SpringMvc定制化原理
    2022-10-10
  • Java多线程编程中的两种常用并发容器讲解

    Java多线程编程中的两种常用并发容器讲解

    这篇文章主要介绍了Java多线程编程中的两种常用并发容器讲解,分别是ConcurrentHashMap与ConcurrentHashMap,需要的朋友可以参考下
    2015-12-12
  • Java发送https请求并跳过ssl证书验证方法

    Java发送https请求并跳过ssl证书验证方法

    最近在负责一个对接第三方服务的事情,在对接期间因为第三方服务为https的请求,这篇文章主要给大家介绍了关于Java发送https请求并跳过ssl证书验证的相关资料,需要的朋友可以参考下
    2023-11-11
  • 记一次线上SpringCloud Feign请求服务超时异常排查问题

    记一次线上SpringCloud Feign请求服务超时异常排查问题

    这篇文章主要介绍了记一次线上SpringCloud Feign请求服务超时异常排查问题,本项目与下游项目均注册在Eureka上面,对这个1秒就超时感到很迷惑,于是开始查阅底层源码之旅。需要的朋友可以参考下
    2022-01-01
  • Java内部类详解

    Java内部类详解

    内部类在 Java 里面算是非常常见的一个功能了,在日常开发中我们肯定多多少少都用过,这里总结一下关于 Java 中内部类的相关知识点和一些使用内部类时需要注意的点。
    2020-02-02
  • SpringBoot中使用spring-retry 解决失败重试调用

    SpringBoot中使用spring-retry 解决失败重试调用

    本文主要介绍了SpringBoot中使用spring-retry 解决失败重试调用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-07-07
  • java Executors常用线程池

    java Executors常用线程池

    这篇文章主要为大家介绍了java Executors中提供的几种常用的线程池使用示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-08-08

最新评论