什么是动态SQL
通过 mybatis 提供的各种标签方法实现动态拼接 sql
if标签
需求
根据客户名和级别查询客户
存在问题
有可能传入的名称或级别为空,可以使用 if 标签来进行判断
如果前一个条件没拼接,后面就会多一个and执行就会报错
Where标签
去掉第一个前 and
trim标签
去除 sql 语句中多余的 and 关键字,逗号,或者给 sql 语句前拼接 “where“、“set“ 以及 “values (“ 等前缀,或者添加“)“ 等后缀,可用于选择性插入、更新、删除或者条件查询等操作。
| 属性 | 描述 |
|---|---|
| prefix | 给 sql 语句拼接的前缀 |
| suffix | 给 sql 语句拼接的后缀 |
| prefixOverrides | 去除 sql 语句前面的关键字或者字符,该关键字或者字符由 prefixOverrides 属性指定,假设该属性指定为 “AND”,当 sql 语句的开头为 “AND”,trim 标签将会去除该 “AND” |
| suffixOverrides | 去除 sql 语句后面的关键字或者字符,该关键字或者字符由 suffixOverrides 属性指定 |
choose标签
有时我们不希望应用所有的条件语句,而是希望在众多选项中只选择一种情况。与Java中的switch语句类似,MyBatis提供了一个选择元素。
1 | <select id="findActiveBlogLike" |
foreach标签
查询条件值为指定的值当中
给定的值可以以三种形式给出
数组
List
VO
创建Vo
测试
bind标签
bind元素允许从OGNL表达式中创建变量,并将其绑定到上下文。
1 | <select id="selectBlogsLike" resultType="Blog"> |
Sql片段
Sql 中可将重复的 sql 提取出来,使用时用 include 引用即可,最终达到 sq l重用的目的。












