当前位置: 首页 > news >正文

百度权重概念百度seo怎么把关键词优化上去

百度权重概念,百度seo怎么把关键词优化上去,网站推广策略和营销策略,种子搜索神器问题背景 在项目开发过程中,基本都会有列表条件查询,例如用户管理会有通过用户姓名模糊查询用户,课程管理会有课程名称模糊查询课程等等。 而查询过程中如果用户在界面上输入一些特殊字符,例如:%_等等,这…

问题背景

在项目开发过程中,基本都会有列表条件查询,例如用户管理会有通过用户姓名模糊查询用户,课程管理会有课程名称模糊查询课程等等。

而查询过程中如果用户在界面上输入一些特殊字符,例如:%_等等,这时可以发现最终生成的SQL大致如下:

select * from t_user where name like '%%%'
select * from t_user where name like '%_%'

这样就会导致将用户表的所有数据都查询出来,这显然不是用户想看到的结果,用户的本意只是想找名字叫%的人,而由于这些字符因为在数据库(Mysql等)中有着特殊含义,

%表示任意字符,_表示任意一个字符,所有导致了这样的结果。

如何解决

很容易想到的解决方案就是在生成SQL的时候对这些个字符进行转义,让数据库将这些字符当作普通的字符串来处理,而不是字符通配符。

例如如果是使用mybatisplus可以这样写:

LambdaQueryWrapper<User> queryWrapper = Wrappers.lambdaQuery(User.class)//使用对用户姓名里面的%_\进行替换.like(StringUtils.isNotBlank(qo.getName()), User::getName, replaceStr(qo.getName()));private String replaceStr(String str) {if (str != null && !"".equals(str)) {str = str.replaceAll("\\\\", "\\\\\\\\").replace("_", "\\_").replace("\'", "\\'").replace("%", "\\%").replace("*", "\\*");}return str;}

 

这样如果输入的name=%,最终生成的SQL如下:

select * from t_user where name like '%\%%'

这里的\%就会当作普通的字符串进行条件匹配,如果有name里面含有%就会被查询出来,满足了用户的期望。

但是,一个系统中这样的条件查询肯定不止一个,会有几十、几百个,每一个都这样处理会显得很麻烦,那有什么办法可以统一处理吗?

当然是有的,咱们不是有AOP嘛,对所有分页查询的入参做个拦截,对这些个特殊字符进行处理,然后再去调用接口就可以了,可以这样处理:

/*** 统一处理列表分页条件查询的入参的特殊字符* 再Mysql查询中有%_\三个特殊字符* %:代表通配符任意字符* _: 代表任意一个字符* \: 在Java代码中需要四个\\\\才能查出数据库中一个\***/
@Component
@Aspect
public class QueryRequestAspect {/*** 定义切面,根据自己的情况定义* 所有controller下面所有page开头的接口*/@Pointcut(value = "execution(* com.xxx.xxx.controller..*.page*(..))")private void queryPointCut() {}//可以使用Before类型的通知、也可以使用Around类型通知@SneakyThrows@Before(value = "queryPointCut()")public void process(JoinPoint joinPoint) {Object[] args = joinPoint.getArgs();if (args != null && args.length != 0) {//对入参进行处理for (int i = 0; i < args.length; i++) {Field[] declaredFields = args[i].getClass().getDeclaredFields();for (Field declaredField : declaredFields) {declaredField.setAccessible(true);Object o = declaredField.get(args[i]);if (o instanceof String) {declaredField.set(args[i], replaceStr((String) o));}}}}}private String replaceStr(String str) {if (str != null && !"".equals(str)) {str = str.replaceAll("\\\\", "\\\\\\\\").replace("_", "\\_").replace("\'", "\\'").replace("%", "\\%").replace("*", "\\*");}return str;}}

这样通过这个QueryRequestAspect 切面就可以统一处理分页查询的条件入参了。

参考资料:

Java查询Mysql数据库时,查询条件带特殊字符(\ % ‘ * _)的处理方式_查询数据库字段包含某特殊字符_weixin_43828846的博客-CSDN博客

SpringBoot AOP拦截、修改请求参数_aop 修改参数值_HouXinLin_CSDN的博客-CSDN博客

http://www.yayakq.cn/news/814770/

相关文章:

  • 图书馆门户网站建设的意义凡科互动官网登录入口官方
  • 5G网站建设网站做平台
  • 永康网站推广注册资本1000万的公司需要多少钱
  • 企业网站建设 百度文库西安模板建网站
  • 深圳附近做个商城网站找哪家公司好软件开发和网页设计哪个好
  • 微信绑定网站现在注册公司需要什么条件
  • 婚纱定制网站哪个好郑州网站建设公司哪家好
  • 湛江 网站建设33岁改行做网站建设
  • 网站管理助手未找到iis做海报的免费网站
  • js建设网站外网企业网站建设的四大因素
  • 广州做网站建设的公司排名网站开发工作流程
  • 物流企业网站建设策划书一起做网店 17货源网
  • 杭州网站建设推荐q479185700上墙wordpress mce
  • 加强网站编辑队伍建设电子商务网站建设调查问卷
  • 怎样仿制网站公司网站维护费 入什么科目
  • 门户网站怎么做天猫网站的建设目标
  • 哪里有免费招聘网站广西网络营销外包公司
  • 08网站建设网站建设公司没落
  • 网站建设最简单的教程宁波宣传片制作公司
  • 研究生做网站开发湖南平台网站建设推荐
  • 网站数据库连接出错开发公司网签房信息
  • 免费网站建设php上海百度关键词优化公司
  • 做刷网站怎么赚钱厦门企业自助建站
  • 中色十二冶金建设有限公司网站wordpress使用攻略
  • 关键词整站优化公司十大高端网站定制设计师
  • 网站上的专题 怎么设计网站做兼容需要多少钱
  • 网站样板网站外链平台的建设方法平台类型(至少5个)?
  • 网站的安全性建设上海环球金融中心多少层
  • 个人制作网站工具桂林腾达网是什么网
  • 好站站网站建设推广网站修改文案