mybatis05

动态SQL

1、条件查询

<select id="getBlogIf" parameterType="Map" resultType="Blog">
        select * from mybatis.blog where 1=1
        <if test="title != null">
            and title = #{title}
        </if>
        <if test="author != null">
            and author =#{author}
        </if>
 </select>

如果有条件,会直接拼接在后面,实现动态,即使一个条件也没有,也有where 1=1

2、优化<where>标签

<select id="getBlogChose" parameterType="Map" resultType="Blog">
        select * from mybatis.blog
        <where>
            <if test="title != null">
                 title = #{title}
            </if>
            <if test="author != null">
                and author =#{author}
            </if>
        </where>

</select>

将where 1=1 去掉,加上<where>标签,他能够智能的决定加不加“and”

3、<choose>

<select id="getBlogChose" parameterType="Map" resultType="Blog">
        select * from mybatis.blog
        <where>
            <choose>
                <when test="title != null">
                    title = #{title}
                </when>
                <when test="author != null">
                    and author =#{author}
                </when>
                <otherwise>
                    and views = #{views}
                </otherwise>
            </choose>
        </where>

</select>

choose标签的作用与switch差不多,选择,但是有顺序,如果第一个、第二个条件满足,只会走第一个条件

本质是个trim

<trim prefix="WHERE" prefixOverrides="AND |OR ">
    ... 
</trim>

set同理

<trim prefix="SET" suffixOverrides=",">
  ...
</trim>

要持续学习的是:

        mysql引擎

        InnoDB底层原理

        索引

        索引优化

上一篇:MySQL之创建表以及数据库增删改操作


下一篇:Python - 基础数据类型 dict 字典