Mybatis 的强大特性之一便是它的动态 SQL。通过使用 JDBC 或其他类似框架的经验,你就能体会到根据不同条件拼接 SQL 语句有多么痛苦。拼接的时候要确保不能忘了必要的空格,还要注意省掉列名列表最后的逗号。利用动态 SQL 这一特性可以彻底摆脱这种痛苦。
Mybatis 的动态 SQL 主要分为下列几类:
if 用于条件判断
choose 相当于 java 语言中的 switch
trim对于包含的内容添加 前缀,后缀
where简化 sql 语句中 where 条件判断的,能智能的处理 and or
set 用于更新时
foreach 用于循环迭代
mybais.xml
注意装载的顺序。
if
但条件判断and 表示且, or 表示或
test=“true/fase”
模糊查询
where
where 条件 if 里可以每条sql语句前加上and或or , 没有影响。
choose
where相当于if,otherwise相当于else
trim
trim相当于where,trim用于自定义。
prefix:前置添加
prefixOverrides:前置覆盖
suffix:后置添加
suffixOverrides:后置覆盖
set
不需要添加,
foreach
不推荐这种写法
批量删除(推荐使用):
separator可以为任意字符。
批量添加数据
一种:
二种:
声明公共的sql
当数据库与封装的属性没有对应时。
查询两个表相关联。封装teacher
学生对应老师,一对多
老师对应多个学生