zoukankan      html  css  js  c++  java
  • 动态SQL

    1 基于OGNL表达式(类似jstl表达式)

    2 完成多条件查询等逻辑实现

    3 实现动态SQL的元素

    <if>

    <where>

    <set>

    <trim>

    <foreach>

    <choose>

    <when>

    <otherwise>

    4 if

    语法:

    <if test="条件"></if>

    注意:如果判断变量的类型是字符串时,要注意是否需要判断空串.

        :<if test="userName!=null and userName !=''"></if>

    5 where

    智能处理and或者or.(会去掉where后面的第一个and或者or)

    :

    select * from smbms_user

    <where>

    <if test="uName!=null and uName !=''">

    and username  like CONCAT('%',#{uName},'%')

    </if>

    <if test="uRole != null">

    and userRole = #{uRole}

     </if>

    </where>

    6 set

    智能处理update时的逗号.(会去掉set后面最后个set值的逗号)

    :

    update smbms_user

    <set>

    <if test="userCode!=null">

    userCode = #{userCode},

    </if>

    <if test="userName!=null">

      userName = #{userName},

    </if>

    <if test="userPassword!=null">

     userPassword = #{userPassword}

    </if>

                 </set>

                 where id = #{id}

    7 trim

    a.更灵活地去除多余关键字

    b.属性:

    prefix(前缀)

    suffix(后缀)

    prefixOverrides(前缀覆盖)

    suffixOverrides(后缀覆盖)

    c.替换where

    <trim prefix="where" prefixOverrides="or|and">

    <if test="uName!=null and uName !=''">

    and username  like CONCAT('%',#{uName},'%')

    </if>

    <if test="uRole != null">

    and userRole = #{uRole}

     </if>

    </trim>

    d.替换set

     update smbms_user

            <trim prefix="set" suffixOverrides=","  

             suffix="where id = #{id}">

             <if test="userCode!=null">

    userCode = #{userCode},

    </if>

    <if test="userName!=null">

      userName = #{userName},

    </if>

    <if test="userPassword!=null">

     userPassword = #{userPassword}

    </if>

            </trim>

    8 foreach

    a)迭代一个集合,通常用于in条件

    b)属性

    item  :集合参数

    index :下标

    collection:必须指定

    list  (集合)

    array (数组)

    map-key(map)

    open  :开始"("

    separator: 分割符:,

    close: 结尾:")"

    :

    <select id="getUserByRoles" resultType="User">

    select * from smbms_user  

    where  gender= #{gender} and userRole in

    <foreach collection="uRole" item="roles"

    open="(" close=")" separator=",">

    #{roles}

    </foreach>

    </select>

    9 choose

    a.相当于Javaswitch语句

    b.when有条件满足的时候,就跳出choose

    <choose>

    <when test ="条件1"> </when>

    <when test ="条件2"> </when>

    <when test ="条件3"> </when>

    <otherwise></otherwise>

    </choose>

  • 相关阅读:
    HDU 5791 Two (DP)
    POJ 1088 滑雪 (DPor记忆化搜索)
    LightOJ 1011
    POJ 1787 Charlie's Change (多重背包 带结果组成)
    HDU 5550 Game Rooms (ccpc2015 K)(dp)
    HDU 5542 The Battle of Chibi (ccpc 南阳 C)(DP 树状数组 离散化)
    HDU 5543 Pick The Sticks (01背包)
    HDU 5546 Ancient Go (ccpc2015南阳G)
    NB-IoT的DRX、eDRX、PSM三个模式 (转载,描述的简单易懂)
    MQTT 嵌入式端通讯协议解析(转)
  • 原文地址:https://www.cnblogs.com/yang82/p/7899898.html
Copyright © 2011-2022 走看看