一、介绍
动态 SQL是MyBatis强大特性之一。极大的简化我们拼装SQL的操作。
动态 SQL 元素和使用 JSTL 或其他类似基于 XML 的文本处理器相似。
MyBatis 采用功能强大的基于 OGNL 的表达式来简化操作。
二、动态SQL
1.if
注意:在查询的时候有些条件没有带上,以至于SQL语句拼装会出现问题:
①where后面写上 1=1 ,所有的if条件都要以 and 开头
②使用<where>标签将所有的条件包含在标签中;但是这种方式只适合and或者or在语句前
2.choose分支选择 (when, otherwise):带了break的switch-case
3.trim字符串截取 (where封装查询条件, set封装修改条件)
4.foreach
(1)遍历
(2).批量保存
方式一:
方式二:
开启分隔多条查询
三、OGNL表达式
1.OGNL
2.bind
可以将OGNL 的值绑定在一个变量上,方便以后引用这个变量的值
四、两个内置参数
myBatis默认的两个内置参数:
1. _parameter:代表整个参数 如果是一个参数:代表这个参数本身
如果是多个参数:例如map集合,那么急代表这个集合
2. _databaseId:如果配置了DatabaseIdProvider标签,则_databaseId就是代表当前数据库的别名
五、sql标签
抽取可重用的SQL片段,方便后续的引用;
1.SQL抽取:经常要查询或者更新的列名,抽取出来进行引用
2.include标签:将抽取好的部分进行引用
3.include标签还可以自定义字段使用<property>标签,要使用${自定义的参数}取值