Mybatis动态sql

MyBatis 的一个强大的特性之一通常是它的动态 SQL 能力。 如果你有使用 JDBC 或其他 相似框架的经验,你就明白条件地串联 SQL 字符串在一起是多么的痛苦,确保不能忘了空 格或在列表的最后省略逗号。动态 SQL 可以彻底处理这种痛苦。

<if test=””>条件判断

问题一、如何防止whereand拼写错误

方法一、在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>标签内部可以通过${}取值(不能用#{})

 

原文地址:https://www.cnblogs.com/chenkeyu/p/7842946.html