栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

SpringBoot日记本系统 :关键字搜索BUG(Mybatisplus and和or的问题)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

SpringBoot日记本系统 :关键字搜索BUG(Mybatisplus and和or的问题)

SpringBoot日记本系统 :关键字搜索BUG(Mybatisplus ad和or的问题)

目录

BUG登记

问题复现

原因

问题代码

解决方案


BUG登记

描述:关键字搜索会搜到别人写的文章标题,包括删除的文章

严重程度:严重

紧急程度:紧急

问题复现

随便在搜索栏搜索一个2022,会出现所有标题含有2022的文章,包括他人的文章和被删除的文章。

不过,如果点进去的话还是看不到的,因为搜索文章的时候加了校验。

原因

日志搜索代码写法问题。

问题代码

这边代码直接加了or,得到的sql是这样的:

==>  Preparing: SELECt id,title,user_id,blog_type,content,is_delete,create_date,update_date FROM tbl_syn_blog WHERe (user_id = ? AND is_delete = ? AND title LIKE ? OR content LIKE ?) ORDER BY update_date DESC LIMIT ?

==> Parameters: 0(String), 0(String), %20%(String), %20%(String), 10(Long)

问题就处在这里

WHERe (user_id = ? AND is_delete = ? AND title LIKE ? OR content LIKE ?)

应该是

WHERe (user_id = ? AND is_delete = ? AND (title LIKE ? OR content LIKE ?) )

解决方案

正确的写法应该是:

queryWrapper.and(qw -> {
    qw.like("title",blog.getKws() )
            .or().like("content",blog.getKws());
});

结果:

==>  Preparing: SELECT id,title,user_id,blog_type,content,is_delete,create_date,update_date FROM tbl_syn_blog WHERe (user_id = ? AND is_delete = ? AND (title LIKE ? OR content LIKE ?)) ORDER BY update_date DESC LIMIT ?
==> Parameters: 0(String), 0(String), %20%(String), %20%(String), 10(Long)

完美解决。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/850924.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号