一、解决思路

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

最新文章

  1. 【C语言入门教程】4.8 指针数组
  2. 闭包(closure)
  3. [vim]vim 在win下乱码解决
  4. java mvc控制器基本传值方式
  5. [转]get,post数据长度的限制
  6. hdu 1176
  7. php PHP_EOL 常量
  8. C语言头文件书写
  9. B - Dungeon Master
  10. Java自定义注解的实现
  11. vue的混合mixins学习
  12. java代码之美(6)---guava之multimap
  13. 一次lr异常Error: C interpreter run time error: Action.c (17): Error -- memory violation : Exception ACCESS_VIOLATION received问题分析
  14. 141. 环形链表 [JS Undefined类型的运用]
  15. 美国主机BlueHost vs HostEase
  16. 并行计算——理想的PRAM模型
  17. 使用gradle多渠道打包
  18. git命令--git checkout 之 撤销提交到暂存区的更改
  19. 【uoj#37/bzoj3812】[清华集训2014]主旋律 状压dp+容斥原理
  20. TCP检验和

热门文章

  1. Mybatis简单应用
  2. io中的特殊流Properties
  3. sparksql解析流程
  4. docker学习之network:初识网络配置
  5. 前端云原生,以 Kubernetes 为基础设施的高可用 SSR(Vue.js) 渲染微服务初探(开源 Demo)
  6. 高德地图&amp;兴趣点(poi)
  7. MySQL-Cluster 初识
  8. Centos8.3安装broadcom(博通)BCM43142无线网卡驱动,Centos8没有wifi选项(No wifi adapter found centos)解决办法
  9. Pytest 系列(29)- 详解 allure.dynamic 动态生成功能
  10. 快速模式第一包: quick_outI1()