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>
    

      

      

  • 相关阅读:
    BZOJ3509: [CodeChef] COUNTARI
    BZOJ3790: 神奇项链
    BZOJ3527: [Zjoi2014]力
    BZOJ2194: 快速傅立叶之二
    解题:BJOI 2006 狼抓兔子
    解题:SDOI 2017 数字表格
    解题:TJOI 2015 弦论
    解题:NOI 2016 优秀的拆分
    解题:AHOI2017/HNOI2017 礼物
    解题:洛谷2093 JZPFAR
  • 原文地址:https://www.cnblogs.com/maybo/p/5183585.html
Copyright © 2011-2022 走看看