Mybatis 动态 SQL


动态sql的作用

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

动态sql标签

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

动态sql原理

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

参考文章

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

tytler

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值