ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

让前端的下拉框支持单选、多选及全选,后台MyBaits解决方案

2021-10-01 12:33:06  阅读:204  来源: 互联网

标签:语句 name Mybatis 关键字 MyBaits 单选 sql date 下拉框


目录

一、解决思路

  让前端的下拉框支持单选、多选及全选,后台让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"'>
这里注意,外层用单引号,字符串用双引号包裹

标签:语句,name,Mybatis,关键字,MyBaits,单选,sql,date,下拉框
来源: https://www.cnblogs.com/nthforsth/p/15359159.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有