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

网站优化大赛vx网页版

网站优化大赛,vx网页版,松原新闻头条,网站建设有钱赚吗一、模糊查询的核心概念 什么是模糊查询? 模糊查询是数据库搜索中允许部分匹配的技术,使用 SQL 的 LIKE 关键字配合通配符实现: % 匹配任意数量字符_ 匹配单个字符 示例场景 用户输入部分名称搜索食材: 输入"苹果"…

一、模糊查询的核心概念

什么是模糊查询?

模糊查询是数据库搜索中允许部分匹配的技术,使用 SQL 的 LIKE 关键字配合通配符实现:

  • % 匹配任意数量字符
  • _ 匹配单个字符

示例场景

用户输入部分名称搜索食材:

输入"苹果" → 匹配"红富士苹果"、"苹果汁"等
输入"果" → 匹配所有包含"果"字的食材

二、安全模糊查询的核心实现

安全模糊查询模板

<select id="searchFoods" resultType="cn.cjxy.domain.FoodInfo">SELECT id, name, type, price, buyer, buy_timeFROM tb_foods<where><if test="type != null and type != ''">type LIKE CONCAT('%', #{type}, '%')</if><if test="name != null and name != ''">AND name LIKE CONCAT('%', #{name}, '%')</if></where>ORDER BY buy_time DESC
</select>

安全三要素解析

  1. **预编译占位符 **#{}
    • 不是字符串拼接,而是将参数作为整体传给数据库
    • 用户输入始终被当作数据值处理,而非SQL代码
    • 即使输入包含SQL关键字(SELECTDELETE等)也不会影响结构
  2. CONCAT函数的作用
CONCAT('%', #{input}, '%')
- 构建完整的模糊匹配模式
- 保证通配符位置固定(两边都有%)
- 避免用户控制模糊匹配的范围
  1. 动态条件判断
<if test="type != null and type != ''">
- 只有当参数非空时添加条件
- 提高查询效率
- 避免空条件污染SQL

三、为什么这种实现最安全?

SQL注入攻击场景模拟

假设恶意用户输入:' OR '1'='1

  1. 安全实现的效果
-- 实际执行的SQL
WHERE name LIKE CONCAT('%', '\' OR \'1\'=\'1', '%')
- 搜索名称包含 `' OR '1'='1` 的记录
- 不会返回所有数据
  1. 不安全的写法对比
<!-- 危险!直接字符串拼接 -->
WHERE name LIKE '%${input}%'
-- 执行的SQL (危险!)
WHERE name LIKE '%' OR '1'='1%'
-- 等同于
WHERE 1=1 -- 返回所有数据!

四、高级模糊查询技巧

1. 精确位置控制

<!-- 前缀匹配 (apple%) -->
LIKE CONCAT(#{input}, '%')<!-- 后缀匹配 (%apple) -->
LIKE CONCAT('%', #{input})<!-- 固定位置匹配 (a_pl_) -->
LIKE CONCAT('a_', #{input}, '_e%')

2. 特殊字符处理

<if test="name != null">name LIKE CONCAT('%', REPLACE(#{name}, '_', '\\_'), '%') ESCAPE '\'
</if>
  • 转义 _% 字符
  • 使用 ESCAPE 关键字定义转义符

3. 大小写不敏感查询

LOWER(name) LIKE CONCAT('%', LOWER(#{name}), '%')

五、性能优化指南

1. 索引使用策略

查询类型能否使用索引优化建议
LIKE 'value%'✅ 是最适合索引
LIKE '%value'❌ 否考虑反向索引
LIKE '%value%'❌ 否限制结果数量

2. 覆盖索引优化

ALTER TABLE tb_foods ADD INDEX idx_name_type (name, type);

3. 分页控制结果集

<select id="searchFoods" resultType="...">...LIMIT #{offset}, #{pageSize}
</select>

六、最佳实践总结

  1. **始终使用 #{} + **CONCAT()
    • 绝对安全的标准做法
    • 全数据库兼容
  2. 动态条件选择
    • 使用 <if test="..."> 仅添加有效条件
    • 避免空条件降低性能
  3. 特殊场景处理
    • 转义特殊字符(%, _)
    • 使用 LOWER() 忽略大小写
    • 对于固定前缀使用 LIKE 'prefix%'
  4. 性能考量
    • 为常用搜索字段建立索引
    • 避免全表扫描的模糊查询
    • 使用分页限制结果数量
  5. 参数预处理
// 在Service层处理参数
if (input != null) {// 去除空格input = input.trim();// 限制长度input = input.length() > 50 ? input.substring(0, 50) : input;
}

七、完整实现流程图

用户输入搜索条件
条件是否有效?
使用预编译占位符
构建安全查询
返回所有数据
使用CONCAT函数
包裹通配符
执行数据库查询
返回结果集
展示结果

这种模糊查询实现方式提供了企业级的安全保障,同时保持了查询的灵活性和高性能。它在保持易用性的同时,从根本上杜绝了SQL注入风险,是开发搜索功能时的首选方案。


文章转载自:

http://3vQXx4Kk.hhxkL.cn
http://swOQJ5hJ.hhxkL.cn
http://CD6Q72Kf.hhxkL.cn
http://rYUkYau8.hhxkL.cn
http://GRXY668z.hhxkL.cn
http://JDKuhU7m.hhxkL.cn
http://xC7R1O3v.hhxkL.cn
http://gb27IpHv.hhxkL.cn
http://PcGLgS84.hhxkL.cn
http://MRUJQhlI.hhxkL.cn
http://QgausjOO.hhxkL.cn
http://WkwnxEMs.hhxkL.cn
http://hDxz1ovn.hhxkL.cn
http://w4tjINdL.hhxkL.cn
http://NhLQRjKs.hhxkL.cn
http://KbgaJKGU.hhxkL.cn
http://LHFMqhiN.hhxkL.cn
http://t4i0XdaD.hhxkL.cn
http://xcgPywSn.hhxkL.cn
http://xEZzdetr.hhxkL.cn
http://E9MKOim7.hhxkL.cn
http://K119kHSS.hhxkL.cn
http://K6DY4gkP.hhxkL.cn
http://Xbn9BJI6.hhxkL.cn
http://J931QPZo.hhxkL.cn
http://4MZj0w7A.hhxkL.cn
http://eFZhwDGH.hhxkL.cn
http://IZevaXQW.hhxkL.cn
http://W4ozVOQ1.hhxkL.cn
http://Fu0oreLH.hhxkL.cn
http://www.dtcms.com/wzjs/630045.html

相关文章:

  • 网站建设预算和维护网站扁平化设计风格
  • 赤峰浩诚网站建设公司wordpress连不上
  • 西安正邦网站建设移动端包括哪些
  • 企业网站开发流程个人做电影网站违法吗
  • 在线html网站开发在直播网站做前端注意
  • 手机上怎么自己做网站教做甜品的网站
  • 哪些网站用echarts做的seo排名快速优化
  • psd to wordpressflash网站优化
  • dw做网站的导航栏wordpress主题模板开发
  • 做商城网站企业怎么做淘宝推广网站
  • 南昌哪里有建设网站的上海建网站方案
  • 义乌婚介网站建设论文网站建设的参考文献
  • 制作网站的公司做网站去哪里找深圳Ic网站建设
  • 网站后台图片并排怎么做英文美食网站怎么做
  • 辽宁网站建设快普网站怎么做采购退货
  • 网站如何与支付宝对接建设工程消防备案查询网站
  • 智慧团建入口登录网站网站导航网
  • 网站建设培训费用多少在本地做改版如何替换旧网站会影响百度收录吗
  • 百度论坛高级seo是什么职位
  • 花生壳软件做的网站长春做网站哪个公司好
  • 做网站 用什么建站软件好硬件开发工具
  • 网站上传图片尺寸建立网站该怎样做
  • 网联科技网站建设湖南公司注册网上核名
  • 素材网站模板做企业网站用什么框架
  • 网站目录文件查看汽车可以做哪些广告视频网站
  • xshell如何做网站网站pv uv统计
  • 霸州网站开发南京专业制作网站
  • 电子商务类型的网站wordpress 标签样式
  • xiu主题做的网站wordpress访问过的页码不变色
  • 手机金融界网站一键生成100个原创视频