【MyBatis <if> <where>标签介绍】

文章目录

      • ``标签
      • ``标签
      • ``标签

标签

标签允许我们在SQL语句中添加条件判断。

<if test="condition">
    
if>

其中,test属性是一个表达式,如果它的值为true,就会执行标签内的SQL语句,否则会忽略。

<select id="findUsers" parameterType="map" resultType="User">
    SELECT * FROM users
    <where>
        <if test="username != null">
            AND username = #{username}
        if>
        <if test="age != null">
            AND age = #{age}
        if>
    where>
select>

标签用于包裹条件,如果usernameage参数不为null,相应的条件语句会被包含在最终的SQL查询中。

标签

标签用于将多个条件连接在一起,它会自动处理条件之间的逻辑关系(AND或OR),并且会在必要时去除不必要的AND或OR。

<select id="findUsers" parameterType="map" resultType="User">
    SELECT * FROM users
    <where>
        <if test="username != null">
            AND username = #{username}
        if>
        <if test="age != null">
            AND age = #{age}
        if>
    where>
select>

如果usernameage都不为null,最终生成的SQL语句会是合理的,不会出现多余的AND关键字。

标签

标签允许我们迭代一个集合,并在SQL语句中使用集合中的元素。

<foreach collection="collection" item="item" open="(" separator="," close=")">
    
foreach>

其中,collection属性是要迭代的集合,item属性是集合中的每个元素,open属性是在迭代开始时添加的字符串,separator属性是在每个元素之间添加的分隔符,close属性是在迭代结束时添加的字符串。

<select id="findUsersByIdList" parameterType="map" resultType="User">
    SELECT * FROM users
    WHERE id IN
    <foreach collection="idList" item="id" open="(" separator="," close=")">
        #{id}
    foreach>
select>

标签将会迭代idList中的整数,并将它们用于生成IN子句,从而实现根据多个ID查询用户的功能。

你可能感兴趣的:(前后端,mybatis,数据库,sql)