zoukankan      html  css  js  c++  java
  • Mybatis--->动态SQL

    • <if>    相当于java中的if,用于单分支的条件判断
    • <choose>、<when>、<otherwise>   相当于java中的switch...case...default,用于多分支的条件判断,从多个选项中选择一个
    • <foreach>  循环,常和sql的in语句搭配使用
    • <where>、<trim>、<set>    辅助元素,用于一些处理sql拼装、特殊字符的问题

    动态SQL会处理掉不需要的  ,(逗号)、AND  、OR 帮助我们完成数据库的操作

    常用的就这么几种

    <where> 的使用

    <select id="queryUser" parameterType="user" resultType="user">
             SELECT * FROM user_tb
             <where>
                <if test="name!=null and name!=''">
                    name=#{name}
                </if>
                <if test="tel!=null and tel!=''">
                    AND tel=#{tel}
                </if>
            </where>
    </select>

     <set>的使用

    <select id="queryUser" parameterType="user" resultType="user">
             SELECT * FROM user_tb
             <where>
                <if test="name!=null and name!=''">
                    name=#{name}
                </if>
                <if test="tel!=null and tel!=''">
                    AND tel=#{tel}
                </if>
            </where>
    </select>

     <trim> 定制where、set的功能

    <select id="queryUser" parameterType="user" resultType="user">
             SELECT * FROM user_tb
             <trim prefix="WHERE" prefixOverrides="AND">
                <if test="name!=null and name!=''">
                    name=#{name}
                </if>
                <if test="tel!=null and tel!=''">
                    AND tel=#{tel}
                </if>
             </trim>
    </select>

    prefix会在这段字符串之前加上指定的前缀,如果里面的<if>都不满足条件,则不加前缀。

    prefixOverrides指定要去除的多余的字符串。

    <set>同理

    <choose>、<when>、<otherwise>的使用

    类似于Switch Case

    <select id="queryPwd" parameterType="user" resultType="string">
             SELECT password FROM user_tb WHERE name=#{name}
             <choose>
                 <when test="role=='admin'">
                     AND role='admin'
                 </when>
                 <when test="role=='teacher'">
                     AND role='teacher'
                 </when>
                 <when test="role=='student'">
                     AND role='student'
                 </when>
             </choose>
    </select>

    <foreach>的使用

    <select id="queryUser" parameterType="list" resultType="user">
    SELECT * FROM user_tb WHERE tel IN
    <foreach collection="list" index="index" item="item" open="(" separator="," close=")">
    #{item}
    </foreach> </select>
    • collection   要迭代的数据类型,数组=>array,List=>list,Map=>Map的key的数据类型。使用数组容易出错,尽量用List代替数组。
    • index   本次迭代的下标,指定一个临时变量表示下标
    • item   本次迭代的元素,指定一个临时变量表示本次迭代的元素
    • open   拼接这段字符串时以什么开头
    • close  拼接这段字符串以什么结尾
    • separator   迭代的元素之间用什么连接(分隔)

    collection是必需的,其余均可选。

  • 相关阅读:
    SOFT-NMS (二) (non maximum suppression,非极大值抑制)
    NMS(non maximum suppression,非极大值抑制)
    读取txt文件的数据,并将其转换为矩阵
    x.append()增加不同维度的区别
    in __init__ self._traceback = tf_stack.extract_stack()的一个原因
    LoadRunner系列之—-03 用Java Vuser协议编写接口测试脚本
    WebLogic篇----02 控制台性能监控
    soapUI系列之—-01 介绍soapUI简介,groovy 简介
    oracle获取字符串长度函数length()和lengthb()
    soapUI系列之—-06 testrunner实现自动化测试
  • 原文地址:https://www.cnblogs.com/springxian/p/13538175.html
Copyright © 2011-2022 走看看