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

大兴区企业网站建设微信电影网站怎么做的

大兴区企业网站建设,微信电影网站怎么做的,网络联盟推广,教务系统网站开发方法问题背景 在项目开发过程中#xff0c;基本都会有列表条件查询#xff0c;例如用户管理会有通过用户姓名模糊查询用户#xff0c;课程管理会有课程名称模糊查询课程等等。 而查询过程中如果用户在界面上输入一些特殊字符#xff0c;例如#xff1a;%_等等#xff0c;这…问题背景 在项目开发过程中基本都会有列表条件查询例如用户管理会有通过用户姓名模糊查询用户课程管理会有课程名称模糊查询课程等等。 而查询过程中如果用户在界面上输入一些特殊字符例如%_等等这时可以发现最终生成的SQL大致如下 select * from t_user where name like %%% select * from t_user where name like %_% 这样就会导致将用户表的所有数据都查询出来这显然不是用户想看到的结果用户的本意只是想找名字叫%的人而由于这些字符因为在数据库Mysql等中有着特殊含义 %表示任意字符_表示任意一个字符所有导致了这样的结果。 如何解决 很容易想到的解决方案就是在生成SQL的时候对这些个字符进行转义让数据库将这些字符当作普通的字符串来处理而不是字符通配符。 例如如果是使用mybatisplus可以这样写 LambdaQueryWrapperUser 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类型通知SneakyThrowsBefore(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.dnsts.com.cn/news/15824.html

相关文章:

  • 支付网站搭建安阳中飞网站建设
  • 建设网站长沙建筑设计资质等级标准
  • 讯代理网站介绍公司的话简短精辟
  • 做视频的网站带模板下载手机开发者模式怎么打开
  • 做外汇最好的财经网站wordpress简称
  • 付费资源下载站源码wordpress收费么
  • 重庆中国建设监理协会网站建设春风摩托车官方网站
  • 设计logo网站官网wordpress免费的音乐插件
  • 简洁手机导航网站模板下载安装佛山顺德网站设计公司
  • 常州 网站制作微信定制开发
  • 汕头市住房和城乡建设局网站证件制作
  • 网站建设 域名 服务器做视频哪个网站收入高
  • 华企立方网站复兴企业做网站推广
  • 廊坊网站定制开发网站官网建设企业
  • 网站制作方案解决办法中铁局哪个局实力最大
  • 赣州做网站找谁欧 美 做 爱 视频网站
  • 白帽网站会展设计制作
  • 宁国网站开发网站备案幕
  • 滨江区建设局网站做阿里巴巴小企业网站
  • 快速搭建网站模板途牛网站建设
  • 怎样做网站分流赚钱做网站公司好开吗
  • 食用油 网站 模板jquery
  • 金融软件网站建设公司排名免费物业网站模板
  • dw网站建设的基本流程宁夏手机网站建设
  • 易尔通网站建设聊城企业门户网站建设
  • 咸阳哪里做网站兰州网站seo诊断
  • 外贸公司网站制作公司在百度上建网站
  • 移动网站建设初学视频教程营销推广计划
  • 徐州网站建设方案维护做网站的感觉
  • 网站开发参考文献期刊怀化网站优化加徽信xiala5效果好