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

谷歌seo代运营唐山seo排名

谷歌seo代运营,唐山seo排名,怎么做vip网站,苹果手机怎么做微电影网站&#x1f31f; 一、什么是动态 SQL&#xff1f; 动态 SQL 是指根据传入参数&#xff0c;动态拼接生成 SQL 语句&#xff0c;不需要写多个 SQL 方法。MyBatis 提供了 <if>、<choose>、<foreach>、<where> 等标签来实现这类操作 ✅ 二、动态 SQL 的优点…

🌟 一、什么是动态 SQL?

动态 SQL 是指根据传入参数,动态拼接生成 SQL 语句,不需要写多个 SQL 方法。MyBatis 提供了 <if><choose><foreach><where> 等标签来实现这类操作


✅ 二、动态 SQL 的优点

优点说明
✔️ 灵活同一个 SQL 根据不同参数拼接不同条件(if / where),非常适合查询页面
✔️ 减少代码重复比如模糊搜索功能,不再需要写多个 SQL 接口方法
✔️ 可读性强(配合 XML)结构清晰,尤其用 <where> / <set> / <foreach>
✔️ SQL 控制权在开发者手中和 Hibernate/JPA 相比,MyBatis 更易于优化复杂 SQL
✔️ 易于维护多条件组合查询如管理后台的搜索表单、动态筛选等功能

❌ 三、动态 SQL 的缺点

缺点说明
❌ 编写略繁琐XML 写法需要嵌套多个标签,容易出错,特别是嵌套复杂条件时
❌ 可读性下降(过度嵌套)动态 SQL 太复杂时,XML 显得臃肿不易读
❌ 不利于 IDE 自动提示逻辑写在 XML 中,IDE 很难做类型检查和智能提示
❌ SQL 拼接错误不易发现某些条件组合可能拼错 SQL,运行期才报错
❌ 与注解风格冲突注解方式不支持复杂的动态 SQL,只能用 XML 实现动态拼接

🛠️ 四、动态 SQL 适用场景

✅ 最适合的场景:

场景举例
🔍 条件查询页面多条件组合搜索,如:用户列表查询、订单筛选、日志检索
📋 后台管理系统如 admin 页面支持 name、status、时间区间等动态条件
📊 报表查询系统查询维度、范围、排序条件全是动态的
🧩 批量操作IN 查询、批量更新、删除(用 <foreach>
📌 多字段更新UPDATE 语句中字段非空才更新(用 <set> 标签)

❌ 不推荐使用的场景:

场景原因
常规增删改查逻辑简单,不需要动态拼接
SQL 条件固定写死 SQL 语句更清晰、维护方便
条件复杂但变化不大建议写多个 SQL 方法,避免 XML 太臃肿

🔍 五、小结一张表

点评维度动态 SQL 表现
灵活性⭐⭐⭐⭐⭐ 超高
编写复杂度⭐⭐⭐❌ 中等偏高
可维护性⭐⭐⭐ 中等
性能控制⭐⭐⭐⭐⭐ 好
推荐场景多条件查询、批量操作

✨ 示例对比

✅ 使用动态 SQL:

<select id="searchUser" resultType="User">SELECT * FROM user<where><if test="name != null"> AND name LIKE CONCAT('%', #{name}, '%')</if><if test="age != null"> AND age = #{age}</if></where>
</select>

❌ 不使用动态 SQL(需要写多个方法):

<select id="findByName" ...>SELECT * FROM user WHERE name = #{name}</select>
<select id="findByAge" ...>SELECT * FROM user WHERE age = #{age}</select>
<select id="findByNameAndAge" ...>SELECT * FROM user WHERE name = #{name} AND age = #{age}</select>

🧩 MyBatis 动态 SQL 标签速查表

标签作用示例注意事项
<if>条件判断<if test="name != null">AND name = #{name}</if>test 支持 OGNL 表达式,如 != null && name != ''
<choose> <when> <otherwise>分支选择(类似 switch-case)见下方示例只能命中一个 <when>,类似 if…else
<trim>自定义前缀、后缀、去掉多余的分隔符`<trim prefix=“WHERE” prefixOverrides="ANDOR "> … `
<where>自动加 WHERE 并去掉首个 AND/OR<where><if test="...">AND ...</if></where>自动处理空条件时避免语法错误
<set>自动加 SET 并去掉多余逗号(用于 UPDATE)<set><if test="...">name=#{name},</if></set>适用于动态更新字段
<foreach>遍历集合,构造 IN 语句、批量插入等见下方示例支持 list、array、Map,常用于 IN (...)
<bind>创建一个变量,可用于字符串拼接等<bind name="pattern" value="'%' + name + '%'" />常配合模糊查询使用

📚 示例合集

1️⃣ <if> 使用示例

<select id="selectUser" resultType="User">SELECT * FROM user<where><if test="name != null and name != ''">AND name LIKE CONCAT('%', #{name}, '%')</if><if test="age != null">AND age = #{age}</if></where>
</select>

2️⃣ <choose> / <when> / <otherwise> 示例

<select id="selectUser" resultType="User">SELECT * FROM user<where><choose><when test="name != null">AND name = #{name}</when><when test="age != null">AND age = #{age}</when><otherwise>AND status = 'active'</otherwise></choose></where>
</select>

3️⃣ <trim> 示例(手动 WHERE 拼接)

<select id="selectUser" resultType="User">SELECT * FROM user<trim prefix="WHERE" prefixOverrides="AND |OR "><if test="name != null">AND name = #{name}</if><if test="age != null">AND age = #{age}</if></trim>
</select>

4️⃣ <set> 示例(动态更新)

<update id="updateUser">UPDATE user<set><if test="name != null">name = #{name},</if><if test="age != null">age = #{age},</if></set>WHERE id = #{id}
</update>

5️⃣ <foreach> 示例(IN 查询)

<select id="selectByIds" resultType="User">SELECT * FROM user WHERE id IN<foreach collection="idList" item="id" open="(" separator="," close=")">#{id}</foreach>
</select>
语法片段含义
id="selectByIds"这是 Mapper 接口中方法对应的 SQL ID
resultType="User"查询结果会映射成 User
collection="idList"传入的是一个集合参数名,比如一个 List<Integer> 类型的参数
item="id"遍历集合中的每个元素,当前元素命名为 id
open="("拼接 SQL 时,开头加一个左括号 (
separator=","每个参数之间用逗号隔开
close=")"最后一个参数后加上右括号 )
#{id}当前遍历元素的值,作为 SQL 参数传入(防 SQL 注入)

6️⃣ <bind> 示例(模糊搜索)

<select id="searchByName" resultType="User"><bind name="pattern" value="'%' + name + '%'" />SELECT * FROM user WHERE name LIKE #{pattern}
</select>
部分解释
<select id="searchByName">定义一个 SQL 查询方法,ID 是 searchByName
resultType="User"查询结果会封装成 User 对象
<bind name="pattern" value="'%' + name + '%'"/>MyBatis 提供的 <bind> 标签: 动态创建一个变量 pattern,它的值是 '%xxx%' 这样的字符串,供后面 SQL 使用
value="'%' + name + '%'"拼接模糊匹配字符串(注意这里的 '%' 是字符串,需要加单引号
#{pattern}MyBatis 会将 pattern 的值安全地替换进 SQL,防止 SQL 注入

📌 小技巧总结

目标建议用法
多条件查询<where><trim> 配合 <if>
动态更新字段<set> 配合 <if>
IN 查询<foreach>
模糊搜索<bind>
模拟 if…else<choose>
http://www.dtcms.com/wzjs/399257.html

相关文章:

  • 营销型网站建设制作超级推荐的关键词怎么优化
  • 做网站推广的seo百度贴吧
  • 找段子的各大网站seo站长论坛
  • 互联网网站建设方案北京seo排名服务
  • 网站内容专题怎么做视频号关键词搜索排名
  • 装饰派单哪个网站靠谱seowhy培训
  • 2023年新闻摘抄seo短视频网页入口引流网站
  • 桂林网站开发杭州排名优化公司
  • .net网站程序百度推广图片
  • 网站如何做才可以微信直接登录淘宝友情链接怎么设置
  • 天津+交友+网站建设四川seo快速排名
  • 腾度网站建设专家网站广告制作
  • 南昌手机网站制作怎么制作一个网站
  • 泸县手机网站建设磁力岛引擎
  • 做淘宝客需要网站吗今日国内新闻10则
  • 东莞品牌营销型网站建设成都门户网站建设
  • 台州网警seo快速排名多少钱
  • 小米路由做网站服务器推广公司哪家好
  • 做正常站网站都被墙了3000块钱在朋友圈投放广告
  • 上海市建设工程检测网网络优化工程师工作内容
  • 郑州做网站价格线上销售怎么做
  • 网站运营推广主要做什么的北京seo不到首页不扣费
  • 网站开发项目资金运用明细合肥今日头条最新消息
  • 化妆网站模板下载免费seo外包公司兴田德润官方地址
  • 做网站的专业叫啥全球疫情最新消息
  • 重庆网站建设公司海口整站seo排名费用价格
  • 做网站公司叫什么推广普通话手抄报简单又好看
  • 手机怎么创网站免费做seo排名好的公司
  • 网站蜘蛛爬行统计系统网店运营流程步骤
  • 网站建设合同书(范本)广州新一期lpr