Mybatis入门,day2,动态SQL
在MyBatis中,动态SQL是一种强大的工具,可以根据不同的条件构建不同的SQL语句。MyBatis提供了一些元素来实现动态SQL,如<if>
, <choose>
, <when>
, <otherwise>
, <foreach>
等。
以下是一个使用<if>
和<foreach>
的动态SQL示例:
<mapper namespace="com.example.mapper.UserMapper">
<!-- 查询用户 -->
<select id="findUsersByName" resultType="com.example.entity.User">
SELECT * FROM user
<where>
<if test="name != null and name.trim() != ''">
AND name LIKE CONCAT('%', #{name}, '%')
</if>
<if test="ids != null and ids.size() > 0">
AND id IN
<foreach item="id" collection="ids" open="(" separator="," close=")">
#{id}
</foreach>
</if>
</where>
</select>
</mapper>
在这个例子中,<select>
元素定义了一个查询操作,<where>
元素会自动处理前导的AND
或OR
,<if>
元素用于条件判断,<foreach>
用于遍历集合构建IN条件。
在Java接口中,你可能会有如下方法定义:
List<User> findUsersByName(@Param("name") String name, @Param("ids") List<Integer> ids);
使用这个方法时,你可以传入用户名的一部分和需要排除的用户ID列表,MyBatis会根据这些条件动态构建SQL语句。
评论已关闭