MyBatisPlus 之 条件查询 <条件构造器>

简介: MyBatisPlus 之 条件查询 <条件构造器>

在进行查询的时候,我们的入口是在Wrapper这个类上,因为它是一个接口,所以我们需要去找它对 应的实现类,关于实现类也有很多,说明我们有多种构建查询条件对象的方式

1. 第一种:QueryWrapper

        QueryWrapper qw = new QueryWrapper();
        qw.lt("age",18);
        List<User> userList = userDao.selectList(qw);
        System.out.println(userList);

lt: 小于(<) ,最终的sql语句为

SELECT id,name,password,age,tel FROM user WHERE (age < ?)

更多的方法可以参考MyBatisPlus官网

条件构造器 | MyBatis-Plus (baomidou.com)

https://baomidou.com/pages/10c804/#abstractwrapper

这种方法有个小问题就是在写条件的时候,容易出错,比如age写错,就会导致查询不成功

2. 第二种:QueryWrapper的基础上使用lambda

        QueryWrapper<User> qw = new QueryWrapper<User>();
        qw.lambda().lt(User::getAge, 10);//添加条件
        List<User> userList = userDao.selectList(qw);
        System.out.println(userList);

User::getAget,为lambda表达式中的,类名::方法名,最终的sql语句为


SELECT id,name,password,age,tel FROM user WHERE (age < ?)


注意: 构建 LambdaQueryWrapper 的时候泛型不能省

此时我们再次编写条件的时候,就不会存在写错名称的情况,但是qw后面多了一层lambda()调用

3. 第三种:LambdaQueryWrapper

        LambdaQueryWrapper<User> lqw = new LambdaQueryWrapper<User>();
        lqw.lt(User::getAge, 10);
        List<User> userList = userDao.selectList(lqw);
        System.out.println(userList);

这种方式就解决了上一种方式所存在的问题。

多条件构建

需求:查询数据库表中,年龄在10岁到30岁之间的用户信息

        LambdaQueryWrapper<User> lqw = new LambdaQueryWrapper<User>();
        lqw.lt(User::getAge, 30);
        lqw.gt(User::getAge, 10);
        List<User> userList = userDao.selectList(lqw);
        System.out.println(userList);

gt:大于(>),最终的SQL语句为

SELECT id,name,password,age,tel FROM user WHERE (age < ? AND age > ?)

构建多条件的时候,可以支持链式编程

        LambdaQueryWrapper<User> lqw = new LambdaQueryWrapper<User>();
        lqw.lt(User::getAge, 30).gt(User::getAge, 10);
        List<User> userList = userDao.selectList(lqw);
        System.out.println(userList);

需求:查询数据库表中,年龄小于10或年龄大于30的数据

        LambdaQueryWrapper<User> lqw = new LambdaQueryWrapper<User>();
        lqw.lt(User::getAge, 10).or().gt(User::getAge, 30);
        List<User> userList = userDao.selectList(lqw);
        System.out.println(userList);

or()就相当于我们sql语句中的or关键字,不加默认是and,最终的sql语句为:

SELECT id,name,password,age,tel FROM user WHERE (age < ? OR age > ?)

目录
相关文章
|
1月前
|
XML Java 数据库连接
mybatis中在xml文件中通用查询结果列如何使用
mybatis中在xml文件中通用查询结果列如何使用
33 0
|
1月前
|
Java 数据库连接 mybatis
Mybatis 多级分类查询
Mybatis 多级分类查询
17 0
|
2月前
|
Java 关系型数据库 数据库连接
MyBatis Plus 解决大数据量查询慢问题
MyBatis Plus 解决大数据量查询慢问题
|
4天前
|
SQL 缓存 Java
mybatis 一对多查询
mybatis 一对多查询
15 0
|
11天前
|
SQL
MyBatis-Plus-Join关联查询
MyBatis-Plus-Join关联查询
|
11天前
|
SQL XML Java
MyBatis-Plus多表关联查询
MyBatis-Plus多表关联查询
|
16天前
|
SQL XML API
Mybatis-Plus实现查询操作
Mybatis-Plus实现查询操作
18 0
Mybatis-Plus实现查询操作
|
17天前
|
Java 数据库连接 mybatis
MyBatis-Plus查询工具类
MyBatis-Plus是一个MyBatis的增强工具类库,提供了许多实用的查询工具类。
7 0
|
19天前
|
SQL Java 数据库连接
Javaweb之Mybatis的基础操作之查询操作的详细解析
Javaweb之Mybatis的基础操作之查询操作的详细解析
21 0
|
1月前
|
SQL Java 数据库连接
Mybatis查询 出现Unknow colum 'xxxx' in field list 解决办法
Mybatis查询 出现Unknow colum 'xxxx' in field list 解决办法