• Mybatis 动态 SQL



    动态sql的作用

    • mybatis 动态 sql 可以让我们在 xml 映射文件内,以标签的形式编写动态 sql,完成逻辑判断和动态拼接 sql 的功能

    动态sql标签

    • 判断传入的值是否符合某种规则,比如是否不为空
    • 标签可以把传入的集合对象进行遍历,然后把每一项的内容作为参数传到 sql 语句中,里面涉及到 item(具体的每一个对象),index(序号),open(开始符),close(结束符),separator(分隔符)
    • 一组组合标签,作用类似于 Java 中的 switch、case、default,只有一个条件生效,也就是只执行满足的条件 when,没有满足的条件就执行 otherwise,表示默认条件
    • 标签可以用来做动态拼接查询条件,where 元素只会在子元素返回任何内容的情况下才插入 “where” 子句;若子句的开头为 “and” 或 “or”,where 元素也会将它们去除;当和 if 标签配合的时候,不用显示的声明类似 where 1=1 这种无用的条件
    • 功能与 类似,主要用于更新操作,为了删除在 if 不符合判断条件下,多出来的 set 关键字和 “,”
    • 标签主要用在当 标签不符合期望的时候,可以自定义返回内容
      prefix(前缀): 在标签内有内容时,在句首增加的字段,例如:where 或者 set
      prefixOverrides(去掉的第一个标记),例如:and | or
      suffix(后缀): 在标签内有内容时,在句尾增加的字段,例如:order by id
      suffixOverriides(去掉最后一个标记),例如:“,”
    • 元素允许在 OGNL 表达式以外创建一个变量,并将其绑定到当前的上下文

    动态sql原理

    • 使用 OGNL 从 sql 参数对象中计算表达式的值,根据表达式的值动态拼接 sql,以此来完成动态 sql 的功能

    参考文章

  • 相关阅读:
    CSP2023 游记
    线程安全问题
    Qt中的JSON支持
    Java IDEA controller导出CSV,excel
    Go 语言访问 Redis 笔记
    Linux安装 swoole
    这款“三无产品“ 值得曝光...
    腾讯云短信告警
    STM32F103单片机C语言模块化编程实战:按键控制LED灯并串口打印详解与示例
    供应商寄售过程的实现
  • 原文地址:https://blog.csdn.net/qq_41956014/article/details/128120906