MyBatis 的一个强大的特性之一通常是它的动态 SQL 能力。 如果你有使用 JDBC 或其他 相似框架的经验,你就明白条件地串联 SQL 字符串在一起是多么的痛苦,确保不能忘了空 格或在列表的最后省略逗号。动态 SQL 可以彻底处理这种痛苦。
<if test=””>条件判断
问题一、如何防止where、and拼写错误
方法一、在where后添加1=1
方法二、使用<where>标签 and都写在每部分的前面
方法三、使用<trim>标签
prefix 为整个标签体拼接后的前缀
PrifixOverriders前缀覆盖,去掉字符串前面多余的字符
Suffix 为整个标签体拼接后的后缀
suffixOverriders后缀覆盖,去掉字符串后面多余的字符
<choose>分支选择
<set>更新
问题二、当使用更新语句时,可能出现不合理”,”,使用<set>包围后就可以自动去除逗号
<foreach>
collection:指定要遍历的集合
Item:遍历出的对象赋值给指定变量
Separator:每个元素之间的分隔符
Open:遍历出所有结果拼接一个开始字符
Close:遍历出所有结果拼接一个结束字符
Index:遍历list时为当前索引,遍历map时为当前key
#{变量名}访问当前遍历的遍历
批量插入
也可以使用分号结尾的批量操作,这种方式还可以批量修改,批量删除
Oracle不支持这种方式
Oracle支持的方式
Mybatis内置参数
_parameter:代表整个参数
单个参数:代表这个参数
多个参数:参数被封装为map,_parameter代表这个map
_databaseId:如果配置了databaseIdProvider标签
_databaseId代表当前数据库的别名
<bind>标签:将OGNL的返回值绑定到变量中,方便后来引用这个变量
例如模糊查询时,自动加%%
<sql>抽取可重用的sql语句
1、经常要用的列名,或者插入的列名抽取出来
2、Include来引用已经抽取的sql
3、Include还可以自定义一些property,<sql>标签内部可以通过${}取值(不能用#{})