MyBatis提供了一些动态SQL标签,可以根据条件来动态地生成SQL语句。以下是常用的动态SQL标签和它们的使用方法:
<if>
标签:用于条件判断,只有当条件成立时才会执行其中的SQL语句。
<select id="selectUser" parameterType="int" resultType="User">
SELECT * FROM user
WHERE 1=1
<if test="id != null">
AND id = #{id}
</if>
</select>
<choose>
、<when>
和<otherwise>
标签:类似于Java中的switch语句,可以根据条件选择执行不同的SQL语句。
<select id="selectUser" parameterType="int" resultType="User">
SELECT * FROM user
WHERE 1=1
<choose>
<when test="id != null">
AND id = #{id}
</when>
<when test="name != null">
AND name = #{name}
</when>
<otherwise>
AND age > 18
</otherwise>
</choose>
</select>
<foreach>
标签:用于循环遍历集合或数组,并生成相应的SQL语句。
<select id="selectUsers" parameterType="List" resultType="User">
SELECT * FROM user
WHERE id IN
<foreach collection="ids" item="id" open="(" separator="," close=")">
#{id}
</foreach>
</select>
<where>
和<set>
标签:用于动态生成WHERE和SET子句。
<update id="updateUser" parameterType="User">
UPDATE user
<set>
<if test="name != null">
name = #{name},
</if>
<if test="age != null">
age = #{age},
</if>
</set>
WHERE id = #{id}
</update>
以上是一些常用的动态SQL标签的使用方法,根据具体的需求选择合适的标签来动态生成SQL语句。