阅读量:0
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语句。