第二节 MyBatis动态SQL详解

亮子 2022-12-06 13:45:00 10388 0 0 0

1、MyBatis动态 sql 是?

  • 动态 SQL 是 MyBatis 的强大特性之一。在 JDBC 或其它类似的框架中,开发人员通常需要手动拼接 SQL 语句。根据不同的条件拼接 SQL 语句是一件极其痛苦的工作。例如,拼接时要确保添加了必要的空格,还要注意去掉列表最后一个列名的逗号。而动态 SQL 恰好解决了这一问题,可以根据场景动态的构建查询。

  • 动态SQL:code that is executed dynamically。 它一般是根据用户输入或外部条件动态组合的SQL语句块。 动态SQL能灵活的发挥SQL强大的功能、方便的解决一些其它方法难以解决的问题。 相信使用过动态SQL的人都能体会到它带来的便利,然而动态SQL有时候在执行性能 (效率)上面不如静态SQL,而且使用不恰当,往往会在安全方面存在隐患 (SQL 注入式攻击)。

1)、Mybatis 动态 sql 是做什么的?

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

2)、Mybatis 的 9 种 动 态 sql 标 签有哪些?

元素 作用 备注
if 判断语句 单条件分支判断
trim,where 辅助元素 用于处理一些SQL拼装问题
choose(when、otherwise) 相当于 Java 中的 switch case 语句 多条件分支判断
foreach 循环语句 在in语句等列举条件常用
bind 辅助元素 拼接参数

3)、动态 sql 的执行原理?

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

参考文章