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

怎么让人搜索到自己做的网站php高级网站开发

怎么让人搜索到自己做的网站,php高级网站开发,百度平台电话,游戏推广赚佣金1. 动态 SQL 的定义 动态 SQL 是 MyBatis 的核心特性之一,它允许开发者根据运行时条件动态生成 SQL 语句。通过特殊的 XML 标签或注解语法,实现 SQL 的灵活拼接,避免在 Java 代码中手动拼接 SQL 字符串的复杂性和安全风险。 2. 核心作用 条…
1. 动态 SQL 的定义

动态 SQL 是 MyBatis 的核心特性之一,它允许开发者根据运行时条件动态生成 SQL 语句。通过特殊的 XML 标签或注解语法,实现 SQL 的灵活拼接,避免在 Java 代码中手动拼接 SQL 字符串的复杂性和安全风险。

2. 核心作用
  • 条件分支:根据参数值动态包含/排除 SQL 片段(如 WHERE 条件过滤)。

  • 循环处理:遍历集合生成批量操作(如 IN 查询、批量插入)。

  • 智能语法处理:自动去除多余的 AND/OR 或逗号,保证 SQL 语法正确性。

  • 防止 SQL 注入:通过参数占位符(#{})预编译 SQL。

3. 常用标签详解

标签作用示例
<if>条件判断,满足条件时包含 SQL 片段xml <if test="name != null">AND name = #{name}</if>
<choose>多条件分支(类似 Java 的 switch-casexml <choose><when test="age != null">AND age = #{age}</when><otherwise>AND age > 18</otherwise></choose>
<foreach>遍历集合(如 List、Array)xml <foreach item="id" collection="ids" open="(" separator="," close=")">#{id}</foreach>
<where>智能处理 WHERE 子句,自动去除开头的 AND/ORxml <where><if test="name != null">AND name = #{name}</if></where>
<set>智能处理 UPDATE 语句,自动去除结尾逗号xml <set><if test="name != null">name = #{name},</if></set>
<trim>自定义字符串修剪(灵活处理前后缀)xml <trim prefix="WHERE" prefixOverrides="AND">...</trim>
<bind>创建变量并绑定到上下文(用于模糊查询等)xml <bind name="pattern" value="'%' + keyword + '%'" />
4. 典型应用场景
  1. 多条件组合查询

    <select id="findUsers" resultType="User">SELECT * FROM user<where><if test="name != null">AND name LIKE #{name}</if><if test="minAge != null">AND age >= #{minAge}</if><if test="maxAge != null">AND age <= #{maxAge}</if></where>
    </select>

    2.批量插入数据

    <insert id="batchInsert">INSERT INTO user (name, age) VALUES<foreach item="user" collection="list" separator=",">(#{user.name}, #{user.age})</foreach>
    </insert>

    3.动态更新字段

    <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. 优势分析
优势说明
代码简洁避免 Java 代码中复杂的 StringBuilder 拼接
可维护性强SQL 与 Java 代码解耦,修改 SQL 无需重新编译 Java
安全性高自动使用 PreparedStatement 预编译,防止 SQL 注入
智能语法处理自动处理逗号、AND/OR 等语法细节
灵活性高支持复杂逻辑(嵌套条件、循环等)
6. 底层实现原理

MyBatis 动态 SQL 基于 OGNL(Object-Graph Navigation Language)表达式 实现:

  1. 解析 XML 标签时,根据 test 属性中的 OGNL 表达式计算布尔值。

  2. 遍历 SQL 节点树,动态拼接符合条件的 SQL 片段。

  3. 最终生成标准的 PreparedStatement 可执行的 SQL。

7. 最佳实践
  • 避免过度复杂:动态 SQL 嵌套不超过 3 层,否则可拆分为多个查询。

  • 性能优化:使用 <where><set> 减少无效字符处理开销。

  • 参数校验:在 Java 层校验参数合法性,减少动态 SQL 判断分支。

  • 注解替代 XML:简单场景可用 @SelectProvider 注解实现动态 SQL:

    @SelectProvider(type = UserSqlBuilder.class, method = "buildQuery")
    List<User> findUsers(UserQuery query);class UserSqlBuilder {public String buildQuery(UserQuery query) {return new SQL() {{SELECT("*");FROM("user");if (query.getName() != null) WHERE("name = #{name}");}}.toString();}
    }
    8. 对比其他方案
    方案动态 SQLJava 拼接 SQL
    可读性高(结构化标签)低(大量字符串拼接)
    安全性高(自动预编译)低(易引发 SQL 注入)
    维护成本低(SQL 独立管理)高(SQL 散落在 Java 代码中)
    复杂逻辑支持强(标签嵌套)弱(需手动处理语法细节)

 


文章转载自:

http://JzL8Osf9.nwbnt.cn
http://xg7OrKPS.nwbnt.cn
http://mVaI4S2J.nwbnt.cn
http://UTQix9H8.nwbnt.cn
http://ZoPFSoke.nwbnt.cn
http://ZfHuZ5sn.nwbnt.cn
http://BrqhUfQq.nwbnt.cn
http://xnyK6KSd.nwbnt.cn
http://TetDdii3.nwbnt.cn
http://OHNJ0U40.nwbnt.cn
http://D2pKnK6P.nwbnt.cn
http://n9m9UiJ9.nwbnt.cn
http://10kJCxND.nwbnt.cn
http://vXEpyjzf.nwbnt.cn
http://pFoTDRKz.nwbnt.cn
http://M2fjujBR.nwbnt.cn
http://pzQTuXrd.nwbnt.cn
http://FaipKteF.nwbnt.cn
http://CUro7RZz.nwbnt.cn
http://D5Rw30U6.nwbnt.cn
http://miMawWix.nwbnt.cn
http://zw56g0aL.nwbnt.cn
http://Z73JjGuq.nwbnt.cn
http://w4iRwq2v.nwbnt.cn
http://8CtZFPtt.nwbnt.cn
http://L7AIcdps.nwbnt.cn
http://suLUbJQh.nwbnt.cn
http://Ll0Fvlie.nwbnt.cn
http://m7UUGeXC.nwbnt.cn
http://bMXD3g0G.nwbnt.cn
http://www.dtcms.com/wzjs/677989.html

相关文章:

  • 手机网站做桌面快捷方式凯里网络推广
  • 电子商城网站网站空间支持功能
  • 制作公司网站流程公网主机上做的网站如果访问
  • 做网站用哪个软件好微表单网站
  • 学校网站网页模板网站基本模块
  • 网站建设咨询问卷全国公共建筑信息平台
  • 石大网页设计与网站建设客观题wordpress插件 图片上传
  • 做网站彩票代理多少钱啊fms 视频网站建设
  • 做图标去什么网站找莱芜在线论坛莱芜一中李念学
  • 淄博哪里有做网站的项目组网站建设方案书
  • 东莞做网站卓诚网络客户管理系统的设计与实现
  • win7做网站服务器卡wordpress 站点图标
  • 企业中英文网站开发南京市建设工程档案馆网站
  • 做网站怎么这么贵让自己的网站收录
  • 六兄弟做网站中山商城型网站建设
  • 凡科网网站后台建设谈谈什么是网络营销
  • 论坛网站平台建设方案论坛网站模板免费下载
  • 做外贸翻译用哪个网站好长春网站建设定制
  • 如何在网站上做公示用小程序做网站
  • 微信公众号网站开发本地调试网站建设html
  • 免费网站入口网站免费进简单做网站的软件
  • 重庆建设工程交易中心网站网站建设费用选择网络专业
  • 对网站建设 意见和建议心理咨询
  • 仙桃市建设局网站百度如何推广网站
  • 左右悬停代码网站广东省做农业网站公司
  • 兰州网站seo优化中国电信安徽分公司招聘网站
  • 电商网站建设实训报告竞价排名是什么意思
  • 惠阳网站开发朵朵软件网站建设
  • 西安小公司网站建设竞价排名适合百度这样的网络平台吗
  • 昆明网站建设解决方案肇庆建设工程备案的网站