MENU

Mybatis动态sql的使用

常用示例代码:

查询

<select id="findOne" parameterType="com.xn2001.mybatis.entity.Student" resultMap="student">
    select *from student s join class c on s.c_id = c.id
    <where>
        <if test="id!=0">
            s.id = #{id}
        </if>
        <if test="username!=null">
            and username=#{username}
        </if>
    </where>

</select>

修改

<update id="update" parameterType="com.xn2001.mybatis.entity.Student">
    update student
    <set>
        <if test="username!=null">
            username = #{username},
        </if>
        <if test="password!=null">
            password = #{password}
        </if>
    </set>
    where id = #{id}
</update>

SQL片段(了解)

有的时候,我们可能会将一些公共的部分抽取出来,方便复用!

  1. 使用SQL标签抽取公共的部分

    <sql id="if-title-author">
    <if test="title != null">
     title = #{title}
    </if>
    <if test="author != null">
     and author = #{author}
    </if>
    </sql>
  2. 在需要使用的地方使用Include标签引用即可

    <select id="queryBlogIF" parameterType="map" resultType="com.rui.pojo.Blog">
    select * from mybatis.bolg
    <where>
     <include refid="if-title-author"></include>
    </where>
    </select>

注意事项:

  • 最好基于单表来定义SQL片段!
  • 不要存在where或者set标签,片段里尽量只有if

动态SQL就是在拼接SQL语句,我们只要保证SQL的正确性,按照SQL的格式,去排列组合就可以了

建议:

  • ​先在Mysql中写出完整的SQL,在对应的去修改称为我们的动态SQL
本站所有未注明转载的文章均为原创,并采用CC BY-NV-SA 4.0 授权协议,转载请注明来源。

Last Modified: May 16, 2020
Archives QR Code
QR Code for this page
Tipping QR Code