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

目录
  • 常规格式
  • 链式编程格式
  • lambda格式(推荐)
  • 条件查询null判定

常规格式

常规格式即创建一个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条件查询内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • MyBatis-Plus 条件查询器的实现

    目录 一.常用注解 1.1 @TableName 1.2 @TableId 1.3 @TableField 1.4 @TableLogic 二.条件构造器Wrapper 2.1 QueryWrapper 2.2 UpdateWrapper 三.MyBatis-Plus分页插件 3.1 实现步骤 四.通用枚举 4.1 数据库表添加字段sex 4.4 测试 五.多数据源 5.1 创建数据库及表 5.3 配置多数据源 5.4 创建新库中Product对应的类 本篇的主要代码依赖于之前的通用Mapper

  • Mybatis-plus selectByMap条件查询方式

    目录 selectByMap条件查询 selectMaps方法返回值字段为空不显示问题 1.application.yaml设置mybayisPlus 2.添加call-setters-on-nulls: true之后 selectByMap条件查询 List<T> selectByMap(@Param("cm") Map<String, Object> columnMap); 如上,可以看到BaseMapper中的selectByMap接口需要的参数是Map&

  • Mybatis-plus动态条件查询QueryWrapper的使用案例

    目录 一.queryWrapper介绍 二.环境搭建 1.创建数据库表并添加几条数据: 2.创建Springboot项目 三.queryWrapper示例 1.案例一:根据name模糊查看未删除的用户列表信息 2.案例二:查看姓李的并且邮箱不为空的用户列表 3.案例三:年龄范围查询(20-30之间的) 4.案例四:根据createTime查看当日的用户列表 5.案例五:查看某个时间段内的用户列表 6.案例六:查询姓李的并且邮箱不为空或者是年龄大于16的用户 7.案例七:查询id为1,2,3的用户

  • mybatis plus实现条件查询

    目录 一.wapper介绍 二.常用的条件方法 1. gt 表示 > 2. le 表示 <= 3. lt 表示 < 4. isNull 表示 查询值为null 5. isNotNull 表示 查询值为不为null 6. eq 表示 = 7. ne 表示 != 8. between 表示 在范围之间,包含边界值 9. notBetween 表示 在范围之外,不含边界值 10. notBetween 表示 在范围之外,不含边界值 11. allEq 多条件查询 12. .链式编程,多条件查询

  • MyBatisPlus-QueryWrapper多条件查询及修改方式

    目录 gt.ge.lt.le.isNull.isNotNull eq.ne between.notBetween allEq like.notLike.likeLeft.likeRight in.notIn.inSql.notinSql.exists.notExists or.and 嵌套 or.嵌套 and orderBy.orderByDesc.orderByAsc last 指定要查询的列 set.setSql gt.ge.lt.le.isNull.isNotNull 大于 > 例: gt

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

    目录 常规格式 链式编程格式 lambda格式(推荐) 条件查询null判定 常规格式 常规格式即创建一个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中的

  • Spark三种属性配置方式详解

    随着Spark项目的逐渐成熟, 越来越多的可配置参数被添加到Spark中来.在Spark中提供了三个地方用于配置: 1.Spark properties:这个可以控制应用程序的绝大部分属性.并且可以通过 SparkConf对象或者Java 系统属性进行设置: 2.环境变量(Environment variables):这个可以分别对每台机器进行相应的设置,比如IP.这个可以在每台机器的$SPARK_HOME/ conf/spark-env.sh脚本中进行设置: 3.日志:所有的日志相关的属性可以

  • 判断python对象是否可调用的三种方式及其区别详解

    查找资料,基本上判断python对象是否为可调用的函数,有三种方法 使用内置的callable函数 callable(func) 用于检查对象是否可调用,返回True也可能调用失败,但是返回False一定不可调用. 官方文档:https://docs.python.org/3/library/functions.html?highlight=callable#callable 判断对象类型是否是FunctionType type(func) is FunctionType # 或者 isinst

  • python中np.multiply()、np.dot()和星号(*)三种乘法运算的区别详解

    为了区分三种乘法运算的规则,具体分析如下: import numpy as np 1. np.multiply()函数 函数作用 数组和矩阵对应位置相乘,输出与相乘数组/矩阵的大小一致 1.1数组场景 A = np.arange(1,5).reshape(2,2) A array([[1, 2],        [3, 4]]) B = np.arange(0,4).reshape(2,2) B array([[0, 1],        [2, 3]]) np.multiply(A,B) #数

  • VMware WorkStation的三种网络连接方式详解

    一. 首先贴出本人在网络上找到与VMware网络连接相关的知识 安装完虚拟机后,默认安装了两个虚拟网卡,VMnet1和VMnet8,其他的未安装(当然也可以手动安装其他的).其中VMnet1是host网卡,用于host方式连接网络的.VMnet8是NAT网卡,用于NAT方式连接网络的.它们的IP地址是随机生成的,如果要用虚拟机做实验的话,最好将VMnet1到VMnet8的IP地址改掉.习惯上把VMware虚拟网卡使用的网段"固定",使用如下原则:VMnet1对应的网段是192.168.

  • Python urls.py的三种配置写法实例详解

    urls.py的配置写法一般有三种方式. 1. 第一种是导入视图的方式,就是 The Django Book 里面样例的写法: from blog.views import index url(r'^nowamagic/', index)  2. 第二种方法是视图处理方法,看代码就知道是怎么回事了. url(r'^nowamagic/', 'test.views.index') 3. 第三种是把模型与视图写在前缀里. urlpatterns = patterns('blog.views', ur

  • Redis三种集群模式详解

    目录 三种集群模式 一.主从复制 1.reids主从模式 2.redis复制原理 3.redis主从复制原理 4.redis主从复制优缺点 二.Sentinel 哨兵模式 1.Sentinel系统 2.Sentinel故障转移 2.1.Sentinel 哨兵监控过程 2.2.Sentinel 哨兵故障转移 3.Sentinel 哨兵优缺点 三.cluster 模式 1.reids cluster 2.Redis Cluster 数据分片原理 3.Redis Cluster 复制原理 4.redi

  • Python 列表(List) 的三种遍历方法实例 详解

    Python 遍历 最近学习python这门语言,感觉到其对自己的工作效率有很大的提升,下面废话不多说,直接贴代码 #!/usr/bin/env python # -*- coding: utf-8 -*- if __name__ == '__main__': list = ['html', 'js', 'css', 'python'] # 方法1 print '遍历列表方法1:' for i in list: print ("序号:%s 值:%s" % (list.index(i)

  • JavaScript trim 去除字符串空格的三种方法(附代码详解)

    方法一: 正则替换 推荐个人认为最好的方法.采用的是正则表达式,这是最核心的原理. 下面是代码原文 复制代码 代码如下: <SCRIPT LANGUAGE="JavaScript"> <!-- //出处:网上搜集 //For more visit http://www.jb51.net // Trim() , Ltrim() , RTrim() String.prototype.Trim = function() { return this.replace(/(^\s

  • MyBatis中多条件查询商品的三种方法及区别

    目录 一.Sql语句设置多个参数有几种方式 二.代码附上 一.Sql语句设置多个参数有几种方式 1.散装参数:需要使用@Param标记Sql语句中占位符处的名称例如 #{name} 2.实体类封装参数 只需要保证Sql中的参数名和实体类属性名对应上,即可设置成功BrandMapper.xml中的SQL语句不用动,把TestBrandMapper中的代码修改即可 3.Map集合 只需要保证Sql中的参数名和Map集合的键的名称对应上,即可设置成功.BrandMapper.xml中Sql语句不用改

随机推荐