• Mybatis动态SQL


    1.动态SQL基本标签

    •if

    •choose (when, otherwise)

    •trim (where, set)

    •foreach

    2.IF 具体用法

    <select id="XX"
     resultType="Blog">
     SELECT * FROM BLOG
     WHERE state = ‘ACTIVE’
     <if test="title != null">
     AND title like #{title}
     </if>
    </select>
    

      多个IF注意第二个if语句里的表达式

    <select id="XX"
     resultType="Blog">
     SELECT * FROM BLOG WHERE state = ‘ACTIVE’
     <if test="title != null">
     AND title like #{title}
     </if>
     <if test="author != null and author.name != null">
     AND author_name like #{author.name}
     </if>
    </select>
    

      3.类似 if ,else用法例子

    <select id="XX"
     resultType="Blog">
     SELECT * FROM BLOG WHERE state = ‘ACTIVE’
     <choose>
     <when test="title != null">
     AND title like #{title}
     </when>
     <when test="author != null and author.name != null">
     AND author_name like #{author.name}
     </when>
     <otherwise>
     AND featured = 1
     </otherwise>
     </choose>
    

      4.Where用法例子

    <select id="XX"
     resultType="Blog">
     SELECT * FROM BLOG
     WHERE
     <if test="state != null">
     state = #{state}
     </if>
     <if test="title != null">
     AND title like #{title}
     </if>
     <if test="author != null and author.name != null">
     AND author_name like #{author.name}
     </if>
    </select>
    

      

    <select id="XX"
     resultType="Blog">
     SELECT * FROM BLOG
     <where>
     <if test="state != null">
     state = #{state}
     </if>
     <if test="title != null">
     AND title like #{title}
     </if>
     <if test="author != null and author.name != null">
     AND author_name like #{author.name}
     </if>
     </where>
    </select>
    

    6.trim用法

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

      7.set用法注意set是sql语句中update table set.....不是将一个参数set到一个属性中

    <update id="updateAuthorIfNecessary">
     update Author
     <set>
     <if test="username != null">username=#{username},</if>
     <if test="password != null">password=#{password},</if>
     <if test="email != null">email=#{email},</if>
     <if test="bio != null">bio=#{bio}</if>
     </set>
     where id=#{id}
    </update>

    8.foreach用法

    <select id="selectPostIn" resultType="domain.blog.Post">
     SELECT *
     FROM POST P
     WHERE ID in
     <foreach item="item" index="index" collection="list"
     open="(" separator="," close=")">
     #{item}
     </foreach>
    </select>
    

      

      

  • 相关阅读:
    python编码的那些事
    算法基础与排序
    排序算法之low B三人组
    Django之反向生成url
    ipython的用法详解
    python3的zip函数
    Django中url的生成过程详解
    Django的ORM实现数据库事务操作
    Django的admin.py注册流程
    Django跨域请求之JSONP和CORS
  • 原文地址:https://www.cnblogs.com/maybo/p/5183585.html
Copyright © 2020-2023  润新知