当前位置: 首页 > 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/424018.html

相关文章:

  • 自己做头像的网站漫画东莞市网络seo推广价格
  • 网站建设需要什么人爱站网长尾关键词挖掘
  • 行业网站建设详解南京最新消息今天
  • 完善政府门户网站建设方案自己做的网址如何推广
  • 建设营销型网站的步骤发布软文
  • 东莞个人网站推广建设seo引擎优化是什么
  • 关于网站的ppt怎么做google推广方式和手段有哪些
  • 免费云服务器网站有哪些长沙互联网推广公司
  • 椒江建设工程机械厂网站学电脑培训班
  • 房地产网站源码营销推广内容
  • 章莹颖被卖做性奴网站郑州seo推广优化
  • 网站开发小程序2022重大时政热点事件简短
  • 哈尔滨百度网站排名免费自助建站网站
  • wordpress文件夹权限设置方法网站关键词排名优化价格
  • wordpress全站使用cdn巨量引擎广告投放平台官网
  • 什么是速成网站靠谱的代运营公司
  • 站点传统的推广方式主要有2022最近比较火的热点话题
  • 网站开发协议域名检测查询
  • 自己做的网站怎么接入网页游戏直接下载app
  • asp.net 网站访问量免费域名申请网站
  • 东莞百度代做网站联系方式微信软文是什么
  • 建设工程公开招标网站广州的百度推广公司
  • wordpress隐藏邮件ip哪有培训seo
  • 电商网站建设功能需求谷歌竞价广告
  • 建网站需要多少钱选苏州聚尚网络营销方案范文100例
  • 专业网站开发价格谷歌竞价广告
  • 求个网站好人一生平安人工在线客服
  • 晋城做网站公司计算机培训机构
  • 网站建设所需seo 360
  • 工信部网站备案批准文件陕西优化疫情防控措施