Mybatis.xml文件中写sql语句会用到的标签

x33g5p2x  于2022-06-01 转载在 其他  
字(1.7k)|赞(0)|评价(0)|浏览(695)

1:首先说一下#{}和${}和区别:

(1)#{}:

- mybatis在处理的时候会将#{username} 处理成?,用于参数传递时占位

- 当传入的参数是字符串时,会自动加上’'将传递的值括起来

- mapper接口方法中的参数与xml文件中是按照参数位置索引对应的,不是根据参数的名称,但是建议最好一致。

(2)¥{}:

${}:

- 字符串拼接

mapper接口方法中的参数与xml文件中是按照参数位置索引对应的,不是根据参数的名称,但是建议最好一致。

- mybatis在处理的时候会直接拼接在传递的sql上,不会生成占位的?符号

- 可以用于创建统一的方法,比如对所有表按照id查询。

- select * from ${tableName} where id = #{id} -----> mybatis操作后:select * from student where id = ‘7dsj’

分支结构: 如果只需要一个条件有效,则使用分支结构用法.

<!--
        如果只需要一个条件有效,则使用分支结构用法.
    -->
    <select id="findChoose" resultType="User">
        select * from demo_user
        <where>
            <choose>
                <when test="name !=null">
                    name = #{name}
                </when>
                <when test="age !=null">
                    age = #{age}
                </when>
                <otherwise>
                    sex = #{sex}
                </otherwise>
            </choose>
        </where>
    </select>

实现用户数据修改, 根据对象中不为null的数据完成修改操作:一般都用到,否则你在修改操作的时候会直接将没有修改的值变为null:

<!--
        set标签用法: 去除set条件中多余的,号
    -->
    <update id="updateSqlSet">
        update demo_user
            <set>
                <if test="name !=null"> name=#{name}, </if>
                <if test="age !=null">  age = #{age}, </if>
                <if test="sex !=null">  sex = #{sex} </if>
            </set>
            where id = #{id}
    </update>

where-if:

<!-- 动态Sql语句
        核心思想: 自动判断是否为null,
                如果为null,该字段不参与sql
        动态Sql规则:
            1.  <if test="写判断条件,可以直接获取属性值"></if>
                    true: 会拼接 字段条件
                    false: 不会拼接字段条件
            2. 多余的关键字
                由于动态sql拼接必然会导致多余的and 或者 or
            3. where标签说明 可以去除 where后边多余的and 或者 or
    -->
    <select id="findSqlWhere" resultType="User">
        select * from demo_user
            <where>
                <if test="id != null"> id = #{id}</if>
                <if test="name != null">and name = #{name}</if>
                <if test="age != null ">and age  = #{age}</if>
                <if test="sex != null ">and sex  = #{sex}</if>
            </where>
    </select>

相关文章