zoukankan      html  css  js  c++  java
  • 让前端的下拉框支持单选、多选及全选,后台MyBaits解决方案

    一、解决思路

      让前端的下拉框支持单选、多选及全选,后台让Mybatis使用** trim **标签拼接动态SQL,实现

    select * from order 
    where startDate = sysdate
    and (name="A" or name="B" or name="C")
    -----------------------------------------------
    --当用户全选时,舍弃掉最后的 and() 条件
    select * from order 
    where startDate = sysdate
    

    二、请求参数

    入参说明

    // 单选
    {
      "date":"2021-10-1",
      "name":["A"]
    }
    
    // 多选
    {
      "date":"2021-10-1",
      "name":["A","B","C"]
    }
    
    // 全选
    {
      "date":"2021-10-1",
      "nameList":["all"]
    }
    

    三、后台相关代码

    • 1、请求的入参对应的实体类
    @Data
    public SelectReq{
      private String date;
      private List<String> nameList;
    }
    

    * 2、Mybatis映射文件

    <select id="selectByBeans" resultMap="BaseResultMap" parameterType="com.wg.demo.po.SelectReq">
      select
      *
      from employee 
      where date = to_date(#{date},'yyyy-mm-dd')
      <trim prefix="and (" suffix=")" suffixOverrides="and | or">
        <foreach collection="nameList"  item="item">
          <if test='name != "all"'>
            name=#{item} or
          </if>
        </foreach>
      </trim>
    </select>
    
    

    四、Mybatis注意要点

    • trim标签一般用于去除sql语句中多余的and关键字,逗号,或者给sql语句前拼接 “where“、“set“以及“values(“ 等前缀,或者添加“)“等后缀
    prefix 给sql语句拼接的前缀
    suffix 给sql语句拼接的后缀
    prefixOverrides 去除sql语句前面的关键字或者字符,该关键字或者字符由prefixOverrides属性指定,假设该属性指定为"AND",当sql语句的开头为"AND",trim标签将会去除该"AND"
    suffixOverrides 去除sql语句后面的关键字或者字符,该关键字或者字符由suffixOverrides属性指定
    • foreach表示循环操作,具体的参数含义如下:
    foreach 元素的属性主要有 item,index,collection,open,separator,close。
    item 表示集合中每一个元素进行迭代时的别名
    index 指定一个名字,用于表示在迭代过程中,每次迭代到的位置
    open 表示该语句以什么开始
    separator 表示在每次进行迭代之间以什么符号作为分隔符
    close 表示以什么结束
    • if 标签判断字符串
    <if test = 'sex == "Y"'>
    这里注意,外层用单引号,字符串用双引号包裹
    
    作者:落花桂
             
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    Docker 设置阿里云镜像
    Linux 安装Navicat Premium 15
    Ubuntu常用工具安装
    Docker安装MongoDB、MySQL、Jenkins、Gitlab、Nginx
    Ubuntu18.04修改apt-get源
    Spring定时任务
    Quartz学习总结
    cron表达式
    将VirtualBox里安装的虚拟机在后台运行方法(在状态栏隐藏窗口)
    npm小结
  • 原文地址:https://www.cnblogs.com/nthforsth/p/15359159.html
Copyright © 2011-2022 走看看