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是必需的,其余均可选。

  • 相关阅读:
    团队项目-项目进度
    团队项目-Recycle项目文档
    团队项目-Recycle需求规格说明书
    团队项目-初步构想
    关于 Localhost:8080/hello
    Java EE课程作业 (Seventh)-- Async
    Java EE 课程作业 (Sixth)-- Filter分析
    Java EE 课程作业(Fifth)-- XML:定义 用途 工作原理及未来xml
    Java EE 课程作业(Fourth)-- Session
    Java EE 课程作业(third)- 关于 Java EE的思维导图
  • 原文地址:https://www.cnblogs.com/springxian/p/13538175.html
Copyright © 2011-2022 走看看