其他分享
首页 > 其他分享> > 让前端的下拉框支持单选、多选及全选,后台MyBaits解决方案

让前端的下拉框支持单选、多选及全选,后台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"]
}

三、后台相关代码

@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注意要点

prefix 给sql语句拼接的前缀
suffix 给sql语句拼接的后缀
prefixOverrides 去除sql语句前面的关键字或者字符,该关键字或者字符由prefixOverrides属性指定,假设该属性指定为"AND",当sql语句的开头为"AND",trim标签将会去除该"AND"
suffixOverrides 去除sql语句后面的关键字或者字符,该关键字或者字符由suffixOverrides属性指定
foreach 元素的属性主要有 item,index,collection,open,separator,close。
item 表示集合中每一个元素进行迭代时的别名
index 指定一个名字,用于表示在迭代过程中,每次迭代到的位置
open 表示该语句以什么开始
separator 表示在每次进行迭代之间以什么符号作为分隔符
close 表示以什么结束
<if test = 'sex == "Y"'>
这里注意,外层用单引号,字符串用双引号包裹

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