让前端的下拉框支持单选、多选及全选,后台MyBaits解决方案
2024-09-03 14:30:26
一、解决思路
让前端的下拉框支持单选、多选及全选,后台让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"'>
这里注意,外层用单引号,字符串用双引号包裹
最新文章
- 【C语言入门教程】4.8 指针数组
- 闭包(closure)
- [vim]vim 在win下乱码解决
- java mvc控制器基本传值方式
- [转]get,post数据长度的限制
- hdu 1176
- php PHP_EOL 常量
- C语言头文件书写
- B - Dungeon Master
- Java自定义注解的实现
- vue的混合mixins学习
- java代码之美(6)---guava之multimap
- 一次lr异常Error: C interpreter run time error: Action.c (17): Error -- memory violation : Exception ACCESS_VIOLATION received问题分析
- 141. 环形链表 [JS Undefined类型的运用]
- 美国主机BlueHost vs HostEase
- 并行计算——理想的PRAM模型
- 使用gradle多渠道打包
- git命令--git checkout 之 撤销提交到暂存区的更改
- 【uoj#37/bzoj3812】[清华集训2014]主旋律 状压dp+容斥原理
- TCP检验和
热门文章
- Mybatis简单应用
- io中的特殊流Properties
- sparksql解析流程
- docker学习之network:初识网络配置
- 前端云原生,以 Kubernetes 为基础设施的高可用 SSR(Vue.js) 渲染微服务初探(开源 Demo)
- 高德地图&;兴趣点(poi)
- MySQL-Cluster 初识
- Centos8.3安装broadcom(博通)BCM43142无线网卡驱动,Centos8没有wifi选项(No wifi adapter found centos)解决办法
- Pytest 系列(29)- 详解 allure.dynamic 动态生成功能
- 快速模式第一包: quick_outI1()