MyBatisPlus-02

一 查询条件的三种

1.按条件查询

java 复制代码
 //方式一:按条件查询
       QueryWrapper qw = new QueryWrapper();
       qw.lt("age",18);
        List<User> userList = userDao.selectList(qw);
        System.out.println(userList);

2.lambda格式按条件查询

java 复制代码
//方式二:lambda格式按条件查询
        QueryWrapper<User> qw = new QueryWrapper<User>();
        qw.lambda().lt(User::getAge, 10);
        List<User> userList = userDao.selectList(qw);
        System.out.println(userList);

3.lambda格式按条件查询2

java 复制代码
 //方式三:lambda格式按条件查询
        LambdaQueryWrapper<User> lqw = new LambdaQueryWrapper<User>();
        lqw.lt(User::getAge, 10);
        List<User> userList = userDao.selectList(lqw);
        System.out.println(userList);

二.并且与或者的关系

java 复制代码
 LambdaQueryWrapper<User> lqw = new LambdaQueryWrapper<User>();
        //并且关系:10到30岁之间
        //lqw.lt(User::getAge, 30).gt(User::getAge, 10);
        //或者关系:小于10岁或者大于30岁
        lqw.lt(User::getAge, 10).or().gt(User::getAge, 30);
        List<User> userList = userDao.selectList(lqw);
        System.out.println(userList);

三 null值的处理

在进行条件查询时,如果条件封闭不彻底则会出现null值。

初始:新建一个query包下的query类,继承要添加上下限的实体类,内部属性:年龄,薪资等有范围的数据。

java 复制代码
@Data
public class UserQuery extends User {
    private Integer age2;
}

1.if语句控制

java 复制代码
 //模拟页面传递过来的查询数据
        UserQuery uq = new UserQuery();
        uq.setAge(10);
        uq.setAge2(30);
        //null判定
        LambdaQueryWrapper<User> lqw = new LambdaQueryWrapper<User>();
        lqw.lt(User::getAge, uq.getAge2());
        if( null != uq.getAge()) {
            lqw.gt(User::getAge, uq.getAge());
        }
        List<User> userList = userDao.selectList(lqw);
        System.out.println(userList);

2.Lambda处理

java 复制代码
    LambdaQueryWrapper<User> lqw = new LambdaQueryWrapper<User>();
        //先判定第一个参数是否为true,如果为true连接当前条件
//        lqw.lt(null != uq.getAge2(),User::getAge, uq.getAge2());
//        lqw.gt(null != uq.getAge(),User::getAge, uq.getAge());
        lqw.lt(null != uq.getAge2(),User::getAge, uq.getAge2())
           .gt(null != uq.getAge(),User::getAge, uq.getAge());
        List<User> userList = userDao.selectList(lqw);
        System.out.println(userList);

四 查询投影

QueryWrapper适用于可以查询自定义字段的,有些如果不支持,则在dom层下的Mapper进行写入

java 复制代码
QueryWrapper<User> lqw = new QueryWrapper<User>();
        lqw.select("count(*) as count, tel");
        lqw.groupBy("tel");
        List<Map<String, Object>> userList = userDao.selectMaps(lqw);
        System.out.println(userList);

五 条件查询

java 复制代码
//条件查询
        LambdaQueryWrapper<User> lqw = new LambdaQueryWrapper<User>();
        //等同于=
        lqw.eq(User::getName,"Jerry").eq(User::getPassword,"jerry");
        User loginUser = userDao.selectOne(lqw);
        System.out.println(loginUser);

六 范围查询

java 复制代码
LambdaQueryWrapper<User> lqw = new LambdaQueryWrapper<User>();
//        //范围查询 lt le gt ge eq between
        lqw.between(User::getAge,10,30);
        List<User> userList = userDao.selectList(lqw);
        System.out.println(userList);

七 模糊查询

java 复制代码
 LambdaQueryWrapper<User> lqw = new LambdaQueryWrapper<User>();
//        //模糊匹配 like,其中likeleft,likeright中的left和right是%匹配符的位置
        lqw.likeLeft(User::getName,"J");
        List<User> userList = userDao.selectList(lqw);
        System.out.println(userList);

更多查询条件设置参看 https://mybatis.plus/guide/wrapper.html#abstractwrapper

相关推荐
科比不来it7 分钟前
Go语言数据竞争Data Race 问题怎么检测?怎么解决?
开发语言·c++·golang
biter down9 分钟前
c语言14:字符指针
c语言·开发语言
SimonKing17 分钟前
Mybatis-Plus的竞争对手来了,试试 MyBatis-Flex
java·后端·程序员
光军oi23 分钟前
JAVA全栈JVM篇————初识JVM
java·开发语言·jvm
我命由我1234528 分钟前
PDFBox - PDFBox 加载 PDF 异常清单(数据为 null、数据为空、数据异常、文件为 null、文件不存在、文件异常)
java·服务器·后端·java-ee·pdf·intellij-idea·intellij idea
7哥♡ۣۖᝰꫛꫀꪝۣℋ35 分钟前
Spring Boot
java·spring boot·后端
Moniane37 分钟前
C++深度解析:从核心特性到现代编程实践
java·开发语言·jvm
uxiang_blog39 分钟前
C++进阶:重载类型转换
linux·开发语言·c++
攻城狮CSU43 分钟前
C# 数据加载专题 之泛型序列化
java·servlet·c#
浩泽学编程43 分钟前
【源码深度 第1篇】LinkedList:双向链表的设计与实现
java·数据结构·后端·链表·jdk