既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
return mpInterceptor;
}
}
**查询结果如下:**
![在这里插入图片描述](https://img-blog.csdnimg.cn/31b416e9ef8f416598d6e75f4ee1b0df.png)
MP有多智能,他给我们提供的方法功能太强大,以至于我们只需传入两个对象即可自动完成分页查询
![在这里插入图片描述](https://img-blog.csdnimg.cn/98a21351e9a6445582287bcf959149c5.png)
### 二.条件查询
#### 2.1通过QueryWrapper对象来执行分页查询
@SpringBootTest
class Mybatisplus{
@Autowired
private UserDao userDao;
@Test
void testGetAll(){
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 < ?)
很容易发现,**以字符串形式输出作为查询条件可能会出现字符串拼写错误**,针对此种情况,可以进行一下小改进!
#### 2.2在QueryWrapper对象的基础上使用lambda表达式
为了解决以字符串形式作为输出而造成拼写错误的问题,**通过lambda来实现实体与属性对应进行查询,就极大地提高了查询的准确性**
@SpringBootTest
class Mybatisplus{
@Autowired
private UserDao userDao;
@Test
void testGetAll(){
QueryWrapper<User> qw = new QueryWrapper<User>();
qw.lambda().lt(User::getAge, 10);//添加条件
List<User> userList = userDao.selectList(qw);
System.out.println(userList);
}
}
**与之对应的SQL语句同样也是:**
SELECT id,name,password,age,tel FROM user WHERE (age < ?)
**注:构建LambdaQueryWrapper的时候泛型不能省**
![在这里插入图片描述](https://img-blog.csdnimg.cn/3c74f80728de4a89b6faac872352f68b.png)
**当不使用泛型时会提示默认的Object类不是函数接口**
![在这里插入图片描述](https://img-blog.csdnimg.cn/714c1387594d4964a9392a149e4ad042.png)
而我们的**lambda()的底层又需要传进去一个实体**,传进去Object显然不能与后面的查询条件相联系!
此时我们再次编写条件的时候,就不会存在写错名称的情况,但是qw后面多了一层lambda()调用
#### 2.3直接通过LambdaQueryWrapper对象
这也是方式二的另一种写法,原理相同都是利用LambdaQueryWrapper
@SpringBootTest
class Mybatisplus{
@Autowired
private UserDao userDao;
@Test
void testGetAll(){
LambdaQueryWrapper<User> lqw = new LambdaQueryWrapper<User>();
lqw.lt(User::getAge, 10);
List<User> userList = userDao.selectList(lqw);
System.out.println(userList);
}
}
### 三.多条件查询
**对于多条件的情景,MP依然可以简单化解,并且构建多条件的时候,可以支持链式编程**
#### 3.1且的情况
>
> **场景一:查询数据库表中,年龄在3岁到8岁之间的用户信息**
>
>
>
@SpringBootTest
class Mybatisplus{
@Autowired
private UserDao userDao;
@Test
/**
* 多条件查询
*/
void testGetAll04() { //方式四 (常用!)
LambdaQueryWrapper qw4 = new LambdaQueryWrapper<>();
qw4.lt(Users::getAge, 8); //上限
qw4.gt(Users::getAge, 3); //下限
// qw4.lt(Users::getAge, 8).gt(Users::getAge, 3); 链式编程!
List users = userDao.selectList(qw4);
System.out.println(users);
}
}
**注:gt(),大于(>),最终的SQL语句为**
SELECT id,name,password,age,tel FROM user WHERE (age < ? AND age > ?)
也是迅速查出来了结果
![在这里插入图片描述](https://img-blog.csdnimg.cn/01ed59eaf022472abdbe656a10a53447.png)
#### 3.2或的情况
>
> **场景二:查询数据库表中,年龄小于3或年龄大于8的数据**
>
>
>
@SpringBootTest
class Mybatisplus{
@Autowired
private UserDao userDao;
@Test
void testGetAll(){
LambdaQueryWrapper<User> lqw = new LambdaQueryWrapper<User>();
lqw.lt(User::getAge, 3).or().gt(User::getAge, 8);
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 > ?)
也是顺利的查了出来![在这里插入图片描述](https://img-blog.csdnimg.cn/f1d63098fd5b4c7d922b0f491e3f7c1b.png)
### 四.null判定
![在这里插入图片描述](https://img-blog.csdnimg.cn/fc858a065ede49699192fce507983003.png)
以TB为例,我们购物时进行条件筛选时,**可以选择单条件,也可以选择多条件**,如上,我的条件就变成price>3000,price<null,这种情况按照以上介绍的查询的方式就会出现问题,如图:
![在这里插入图片描述](https://img-blog.csdnimg.cn/580bf63098954c32af8d249d2eae3c80.png)
显然,这种情况在开发过程中时不被允许的。所以要求我们针对null的情况要解决如下问题:
![img](https://img-blog.csdnimg.cn/img_convert/78185465f50b6f9b63089234c4763605.png)
![img](https://img-blog.csdnimg.cn/img_convert/c79a2c1e031d3d7954033613e069d83f.png)
![img](https://img-blog.csdnimg.cn/img_convert/f514bcf5952a4c8ebc954a800f32eca2.png)
**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!**
**由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新**
**[需要这份系统化资料的朋友,可以戳这里获取](https://bbs.csdn.net/topics/618545628)**
..(img-8rjlfdgR-1714991383007)]
**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!**
**由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新**
**[需要这份系统化资料的朋友,可以戳这里获取](https://bbs.csdn.net/topics/618545628)**