• 动态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>

  • 相关阅读:
    基于jquery. cookie 防刷新重复点击获取验证码
    Mysql常用命令详解
    20种常用的DOS命令小结
    php 常用正则表达式
    VBA Excel 常用 自定义函数
    VBA Mysql 类
    VBA Excel 引用 API,以实现“透明”
    VBA Excel 打印
    VBA Excel 单元格操作
    php上传常见文件类型对应的$_FILES["file"]["type"](转)
  • 原文地址:https://www.cnblogs.com/yang82/p/7899898.html
Copyright © 2020-2023  润新知