zoukankan      html  css  js  c++  java
  • 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>
    

      

      

  • 相关阅读:
    【leetcode】Remove Duplicates from Sorted Array I & II(middle)
    Android--Activity在跳转时携带数据
    HDU 5371 Manacher
    Java之旅hibernate(2)——文件夹结构
    【智能路由器】让MT7620固件openwrt支持USB
    Android Context 是什么?
    分治法解决高速排序问题
    Alluxio增强Spark和MapReduce存储能力
    UVA
    《React-Native系列》44、基于多个TextInput的键盘遮挡处理方案优化
  • 原文地址:https://www.cnblogs.com/maybo/p/5183585.html
Copyright © 2011-2022 走看看