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

网站首页权重门户网站怎么做

网站首页权重,门户网站怎么做,秦皇岛建设网站官网,公众号中做微网站一、模糊查询的核心概念 什么是模糊查询? 模糊查询是数据库搜索中允许部分匹配的技术,使用 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://www.dtcms.com/wzjs/468306.html

相关文章:

  • 免费的网站模板哪里有网站首页不收录
  • 三好街做网站的怎么制作一个网页
  • 专业网站建设公司地址搜索引擎有哪些好用
  • 个体工商户注册流程四川seo关键词工具
  • 全国市场主体登记注册服务网seo整站排名
  • 本网站建设服务于美国广州网站建设公司
  • 荆门做网站的公司裂变营销五种模式十六种方法
  • HTML网站页面建设重庆seo公司排名
  • 网站后端开发是什么seo自媒体培训
  • 怎么做网站的图片跳转程序员培训机构哪家好
  • 局域网内部如何做网站哪家公司做seo
  • seo整站优化外包哪家好北京seo外包 靠谱
  • 帮做装修设计的网站手机关键词排名优化
  • wordpress漂浮花瓣高明搜索seo
  • wordpress 引用页面百度的seo关键词优化怎么弄
  • 网站名词排名怎么做最近新闻摘抄50字
  • 国内外网站在线发外链工具
  • 桂林北站到桂林站多远镇江网站建设
  • 山东胜越石化工程建设有限公司网站电脑编程培训学校哪家好
  • 建设网站青岛手机网页制作
  • 目录网站做外链企业营销策划是做什么的
  • 网站建设模板制作郑州seo外包费用
  • 大型网站运营步骤郑州网站优化排名
  • 学做分类网站百度指数什么意思
  • 一级a做爰片无码网站打开网址跳转到国外网站
  • 成都新线加网站建设浙江疫情最新消息
  • 个人博客模板 wordpress英文谷歌seo
  • 织梦系统 子网站站长工具怎么关掉
  • 做网赌网站怎么推广拉人杭州seo运营
  • 专业网站建设模板数据分析系统