MyBatis 是一款优秀的持久层框架,它的强大之处正是 SQL 语句映射,这一章介绍常用的动态 SQL
一、 概述
动态 SQL 是 MyBatis 的强大特性之一,通过不同参数生成不同的 SQL,可以动态地对数据持久层进行操作,而不需要每个数据访问操作都要进行手动地拼接 SQL 语句。
二、动态语句
1. if
<if>
语句可以根据条件指定 SQL 部分,例如 where
条件
2. choose、when、othewise
<choose>
语句类似于 Java 的 switch
语句,可以从多个条件中选择一个使用。
3. trim、where、set
在前面的例子中,where
后面都会加上 1=1
这个条件,为了解决当所有条件都没生效时,where
条件为空而产生异常的问题。
在更新语句 set
后面也会出现同样的问题,可以使用 <trim>
语句通过指定前缀和后缀的方式来解决。
MyBatis 也提供更简单的 <where>
语句和 <set>
语句来解决这个问题。
4. foreach
<foreach>
可以对集合进行遍历,例如使用 IN
条件语句的时候。
item
指定元素,index
指定索引。
5. script
<script>
可以在接口上的注解中使用动态SQL。
<script>
标签里面的内容和在 XML 文件中的动态 SQL 语法一致。