• Mybatis动态 SQL 大全


    1. If 语句

    <select id="queryBlogIf" parameterType="map" resultType="blog">
     select * from blog where
     <if test="title != null">
      title = #{title}
     </if>
     <if test="author != null">
      and author = #{author}
     </if>
    </select>

    2. Where语句

    <select id="queryBlogIf" parameterType="map" resultType="blog">
     select * from blog
     <where>
      <if test="title != null">
       title = #{title}
      </if>
      <if test="author != null">
       and author = #{author}
      </if>
     </where>
    </select>

    where 元素只会在子元素返回任何内容的情况下才插入 “WHERE” 子句。而且,若子句的开头为 “AND” 或 “OR”,where 元素也会将它们去除。

     

    3. Set语句

    <!--注意set是用的逗号隔开-->
    <update id="updateBlog" parameterType="map">
     update blog
     <set>
      <if test="title != null">
       title = #{title},
      </if>
      <if test="author != null">
       author = #{author}
      </if>
     </set>
     where id = #{id};
    </update>

    4. Choose语句

    <select id="queryBlogChoose" parameterType="map" resultType="blog">
     select * from 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>

    5. Foreach语句

    <select id="queryBlogForeach" parameterType="map" resultType="blog">
     select * from blog
     <where>
      <!--
      collection:指定输入对象中的集合属性
      item:每次遍历生成的对象
      open:开始遍历时的拼接字符串
      close:结束时拼接的字符串
      separator:遍历对象之间需要拼接的字符串
      select * from blog where 1=1 and (id=1 or id=2 or id=3)
      -->
      <foreach collection="ids" item="id" open="and (" close=")"
      separator="or">
       id=#{id}
      </foreach>
     </where>
    </select>

    6. SQL片段

    <sql id="if-title-author">
     <if test="title != null">
      title = #{title}
     </if>
     <if test="author != null">
      and author = #{author}
     </if>
    </sql>

    引用SQL片段:

    <select id="queryBlogIf" parameterType="map" resultType="blog">
     select * from blog
     <where>
      <!-- 引用 sql 片段,如果refid 指定的不在本文件中,那么需要在前面加上 namespace-->
      <include refid="if-title-author"></include>
      <!-- 在这里还可以引用其他的 sql 片段 -->
     </where>
    </select>

    7. Bind元素

    bind 元素允许你在 OGNL 表达式以外创建一个变量,并将其绑定到当前的上下文。比如:

    <select id="selectBlogsLike" resultType="Blog">
      <bind name="pattern" value="'%' + _parameter.getTitle() + '%'" />
      SELECT * FROM BLOG
      WHERE title LIKE #{pattern}
    </select>
     
  • 相关阅读:
    【★】Web精彩实战之
    【★】Web精彩实战之
    Color.js增强你对颜色的控制
    JS查错小工具-三生有幸【推荐】
    JS查错小工具-三生有幸【推荐】
    人工智能成功识别“色情暴力”信息????
    新浪博客“网络繁忙请稍后再试”
    《OD大数据实战》Sqoop入门实例
    《OD大数据实战》驴妈妈旅游网大型离线数据电商分析平台
    《OD大数据实战》HBase入门实战
  • 原文地址:https://www.cnblogs.com/KL2016/p/16291716.html
Copyright © 2020-2023  润新知