一、条件查询方式
取消Spring日志打印
取消SpringBoot和MyBatisPlus的log打印
二、多条件构建查询
格式一:常规格式
格式二:链式编程格式
格式三:lambda格式(推荐)
格式四:lambda格式(推荐)
并且(and)
或者(or)
一、条件查询方式
MyBatisPlus将书写复杂的SQL查询条件进行封装,使用编程的形式完成查询条件的组合。
在上几篇博客,查询所有和分页查询,都能看到wrapper类,这个类就是用来构建查询条件的。
取消Spring日志打印
测试的时候,如果觉得控制台打印的日志比较多,速度比较慢,可以取消spring日志打印,resources目录下添加logback.xml,名称固定,格式固定,添加以下内容即可:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
</configuration>
打印日志过多的操作可以不用做,一般方便我们查看程序的运行结果。
取消SpringBoot和MyBatisPlus的log打印
除了日志的打印还有log的打印很占位置,取消MybatisPlus启动的banner图标:
application.yml添加如下内容:
# mybatis-plus日志控制台输出
mybatis-plus:
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
global-config:
banner: off # 关闭mybatisplus启动图标
取消SpringBoot的log图标打印
application.yml添加如下内容:
spring:
main:
banner-mode: off # 关闭SpringBoot启动图标(banner)
二、多条件构建查询
格式一:常规格式
QueryWrapper<User> qw = new QueryWrapper<User>();
//查询年龄大于等于18岁,小于65岁的用户
qw.lt("age",65);
qw.ge("age",18);
List<User> userList = userDao.selectList(qw);
System.out.println(userList);
lt相当于(<)
SELECT id,name,password,age,tel FROM user WHERE (age < ?)
ge相当于(>)
SELECT id,name,password,age,tel FROM user WHERE (age > ?)
格式二:链式编程格式
QueryWrapper<User> qw = new QueryWrapper<User>();
//查询年龄大于等于18岁,小于65岁的用户
qw.lt("age",65).qw.ge("age",18);
List<User> userList = userDao.selectList(qw);
System.out.println(userList);
格式三:lambda格式(推荐)
QueryWrapper<User> qw = new QueryWrapper<User>();
//查询年龄大于等于18岁,小于65岁的用户
qw.lambda.lt(User::getAge,65).ge(User::getAge,18);
List<User> userList = userDao.selectList(qw);
System.out.println(userList);
User::getAge,为lambda表达式中的,类名::方法名,因为是链式编程,将大于小于都连接了,最终的sql语句为:
SELECT id,name,password,age,tel FROM user WHERE (age < ? AND age > ?)
格式四:lambda格式(推荐)
LambdaQueryWrapper<User> qw = new LambdaQueryWrapper<User>();
//查询年龄大于等于18岁,小于65岁的用户
qw.lt(User::getAge,65).ge(User::getAge,18);
List<User> userList = userDao.selectList(qw);
System.out.println(userList);
并且(and)
LambdaQueryWrapper<User> lqw = new LambdaQueryWrapper<User>();
//查询年龄大于等于18岁,小于65岁的用户
lqw.lt(User::getAge,65).ge(User::getAge,18);
List<User> userList = userDao.selectList(lqw);
System.out.println(userList);
什么都不写,就默认是并且(and)的关系
或者(or)
LambdaQueryWrapper<User> lqw = new LambdaQueryWrapper<User>();
//查询年龄大于等于18岁,小于65岁的用户
lqw.lt(User::getAge,65).or().ge(User::getAge,18);
List<User> userList = userDao.selectList(lqw);
System.out.println(userList);
or()就相当于我们sql语句中的or关键字,最终的sql语句为
SELECT id,name,password,age,tel FROM user WHERE (age < ? OR age > ?)
————————————————
版权声明:本文为CSDN博主「夏志121」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/m0_61961937/article/details/125924617