什么是动态SQL:动态SQL就是指根据不同的条件生成不同的SQL语句
动态sql主要是简化了我们之前使用Stringbuilder来append拼接sql语句的操作。我们之前在jdbc会根据不同条件来拼接不同sql语句实现不同的功能。Mybatis的动态SQL会帮我们省去这一操作。
官网描述: MyBatis 的强大特性之一便是它的动态 SQL。如果你有使用 JDBC 或其它类似框架的经验,你就能体会到根据不同条件拼接 SQL 语句的痛苦。例如拼接时要确保不能忘记添加必要的空格,还要注意去掉列表最后一个列名的逗号。利用动态 SQL 这一特性可以彻底摆脱这种痛苦。 虽然在以前使用动态 SQL 并非一件易事,但正是 MyBatis 提供了可以被用在任意 SQL 映射语句中的强大的动态 SQL 语言得以改进这种情形。 动态 SQL 元素和 JSTL 或基于类似 XML 的文本处理器相似。在 MyBatis 之前的版本中,有很多元素需要花时间了解。MyBatis 3 大大精简了元素种类,现在只需学习原来一半的元素便可。MyBatis 采用功能强大的基于 OGNL 的表达式来淘汰其它大部分元素。 ------------------------------- - if - choose (when, otherwise) - trim (where, set) - foreach -------------------------------
就补充一点
如果不写1=1,会很突兀,这样写sql语句是不正规的。
写where 1=1是不安全。有种解决方案就是用where标签