SpringBoot
【黑马程序员SpringBoot2全套视频教程,springboot零基础到项目实战(spring boot2完整版)】
SpringBoot 基础篇
文章目录
*
–
+ SpringBoot
+ SpringBoot 基础篇
+ 4 基于 SpringBoot 的SSMP 整合案例
+
* 4.7 数据层标准开发【条件查询】
*
– 4.7.1 实现条件查询
– 4.7.2 小结
4 基于 SpringBoot 的SSMP 整合案例
4.7 数据层标准开发【条件查询】
4.7.1 实现条件查询
【其实这个内容在Mybatis-Plus 的章节已经学过了】
在我们之前查询全部的时候,设置的那个null 参数其实本身就是用来进行条件查询的。
试试
@Test
void testBy(){
QueryWrapper<Book> queryWrapper = new QueryWrapper<>();
queryWrapper.like("name","Spring");
bookDao.selectList(queryWrapper);
}
测试结果
这就查询到了所有name 中包含Spring 字符串的记录。
当然还有很多条件书写方法,可以参考官网:
https://baomidou.com/pages/10c804/
当然这样子写有个问题,字段名是我们自己写的,万一写错了、记错了,就会出错了
所以这种方式不是很推荐
除了QueryWrapper , 还有个对象叫 LambdaQueryWrapper
试试
@Test
void testBy2(){
LambdaQueryWrapper<Book> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.like(Book::getName,"Spring");
bookDao.selectList(queryWrapper);
}
测试结果
使用这个对象,那就想写错的机会都没了【安全性也高了】
但是新问题又来了,
如果我那个条件没有,就前端给我传来一个null,会是什么情况?
试试
条件为null,本意应该是没有设置条件,即应该查出所有数据,但是现在直接变成null 字符串进行拼接了,这很明显是有问题的。
两种解决办法:
① 传统解决办法 if 判断
@Test
void testBy2(){
String name = null;
LambdaQueryWrapper<Book> queryWrapper = new LambdaQueryWrapper<>();
if (name != null){
queryWrapper.like(Book::getName,name);
}
bookDao.selectList(queryWrapper);
}
这种方式就老掉牙了
② 其实like这种条件前面还可以有一个参数
如果是真,加上这个条件,如果为假,不加这个条件
@Test
void testBy2(){
String name = null;
LambdaQueryWrapper<Book> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.like(name != null ,Book::getName , name);
bookDao.selectList(queryWrapper);
}
测试结果
不为空
没毛病【即没传值我就不连,传了值我就连】
小结一下
- 使用QueryWrapper对象封装查询条件,推荐使用LambdaQueryWrapper对象,所有查询操作封装成方法调用
@Test
void testGetByCondition(){
IPage page = new Page(1,10);
LambdaQueryWrapper<Book> lqw = new LambdaQueryWrapper<Book>();
lqw.like(Book::getName,"Spring");
bookDao.selectPage(page,lqw);
}
@Test
void testGetByCondition(){
QueryWrapper<Book> qw = new QueryWrapper<Book>();
qw.like("name","Spring");
bookDao.selectList(qw);
}
- 支持动态拼写查询条件
@Test
void testGetByCondition(){
String name = "Spring";
IPage page = new Page(1,10);
LambdaQueryWrapper<Book> lqw = new LambdaQueryWrapper<Book>();
lqw.like(Strings.isNotEmpty(name),Book::getName,"Spring");
bookDao.selectPage(page,lqw);
}
4.7.2 小结
- 使用QueryWrapper对象封装查询条件
- 推荐使用LambdaQueryWrapper对象
- 所有查询操作封装成方法调用
- 查询条件支持动态条件拼装
Original: https://blog.csdn.net/weixin_44226181/article/details/127816952
Author: Ding Jiaxiong
Title: SpringBoot SpringBoot 基础篇 4 基于 SpringBoot 的SSMP 整合案例 4.7 数据层标准开发【条件查询】
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/654670/
转载文章受原作者版权保护。转载请注明原作者出处!