前言

当数据库里存储的值是以逗号分隔格式存储的字符串时。

数据格式如下:

 id name  ids 
 1  张三  a,b,c
 2  李四  c,d,e

我们拿到的条件参数是:b,e

1.后台通过逗号分隔数组,生成查询语句

select * from table where ids in (’b’,’e’)

2.通过myBatis自带功能foreach,直接把逗号分隔的字符串传到mapper.xml即可,后台不用过多操作。

<select id="getSimilarity" parameterType="java.util.HashMap" resultType="java.util.HashMap">
select * from table
where ids in
<foreach item="item" index="index" collection="ids.split(’,’)" open="(" separator="," close=")">
#{item}
</foreach>
</select>

注:ids就是传入的参数名称,如果报错请检查参数名称是否正确,参数是否有值。

后台代码(我这里有需要其他参数,所以用的map举例):

Map<String, Object> map = new HashMap<String, Object>();
map.put("ids", "b,e");
List<Map<String, Object>> list = tableService.getSimilarity(map);

控制台打印SQL:

Preparing: select * from table where ids in ( ? , ?  )
Parameters: b(String), e(String)

我这里就是简单举例,其他使用方式请各位大佬自行研究。

原文章地址:https://www.wanpishe.top/detail?blogId=555f6b2a-cd80-4c55-8174-c96ac898ec9f

myBatis通过逗号分隔字符串,foreach的更多相关文章

  1. MyBatis从入门到精通(第4章):MyBatis动态SQL【foreach、bind、OGNL用法】

    (第4章):MyBatis动态SQL[foreach.bind.OGNL用法] 4.4 foreach 用法 SQL 语句中有时会使用 IN 关键字,例如 id in (1,2,3).可以使用 ${i ...

  2. mybatis动态sql之foreach标签

    foreach 元素的功能非常强大,它允许你指定一个集合,声明可以在元素体内使用的集合项(item)和索引(index)变量.它也允许你指定开头与结尾的字符串以及在迭代结果之间放置分隔符.这个元素是很 ...

  3. MyBatis从入门到精通(八):MyBatis动态Sql之foreach标签的用法

    最近在读刘增辉老师所著的<MyBatis从入门到精通>一书,很有收获,于是将自己学习的过程以博客形式输出,如有错误,欢迎指正,如帮助到你,不胜荣幸! 本篇博客主要讲解如何使用foreach ...

  4. 转载:mybatis踩坑之——foreach循环嵌套if判断

    转载自:作者:超人有点忙链接:https://www.jianshu.com/p/1ee41604b5da來源:简书 今天在修改别人的代码bug时,有一个需求是在做导出excel功能时,mybatis ...

  5. SqlSerVer 列与逗号分隔字符串 互相转换

    在项目中,使用SQLServer数据库,有一个需求,需要将数据库的某一列,转换成逗号分隔的字符串.同时,需要将处理完的字符串,转换成为一列. 经过查阅资料与学习,通过以下方式可以实现如上所述需求: 1 ...

  6. mybatis如何接收字符串转换为date类型插入数据库

    今天遇到一个问题,先描述一下: 后台获取数据,有一个字段是时间字段,后台传过来的是字符串类型的,如:2016/11/16 10:26:17, 将该字符串放在map对象中(持久层用的是mybatis或者 ...

  7. Oracle存储过程,以逗号分隔字符串传参的处理

    Oracle存储过程,经常会遇见传入的参数是逗号分隔. 处理需要3步: 第一步,创建Type类型 第二部,创建函数 第三部,创建存储过程 代码如下: 第一步: create or replace ty ...

  8. mybatis动态sql中foreach标签的使用

    foreach标签主要用于构建in条件,他可以在sql中对集合进行迭代.如下: <delete id="deleteBatch"> delete from user w ...

  9. Oracle 根据逗号分隔字符串 同时记录一波坑

    报表需要过滤掉不需要的数据,由于报表是根据零件编号来统计,需要过滤掉不合格品,只能根据关联的物料编码(零件编号)来过滤,只能通过not in来过滤,但是天真的我却用下面代码来当子查询: b.part_ ...

随机推荐

  1. selenium自动化框架介绍------unittest版本

    首先说下unittest的两个问题:1.未实现失败重跑 2.未实现远程的分布式(即多线程呼起多台远程计算机,并行进行用例的执行), 为什么要使用框架:  比较方便,只需要写用例就行,而不用考虑结构.还 ...

  2. Ubuntu下哪个PDF阅读器更好使???

    根据windows系统上的经验,果断选择了foxit reader的linux版本: 从 http://www.foxitsoftware.com/downloads/ 选择 “Desktop Lin ...

  3. scrapy xpath选择器多级选择错误

    在学习scrapy中用xpath提取网页内容时,有时要先提取出一整个行标签内容,再从行标签里寻找目标内容.出现一个错误. 错误代码: def parse(self, response): sel = ...

  4. Win10+TensorFlow-gpu pip方式安装,anaconda方式安装

    中文官网安装教程:https://www.tensorflow.org/install/install_windows#determine_how_to_install_tensorflow 1.安装 ...

  5. ArcGIS api for javascript——图层-创建WMS图层类型的图层

    本例使用一个WMS端点创建了一个简单的动态图层.首先,代码声明一个新的类my.CityStatesRiversUSAWMSLayer,该类继承esri.layers.DynamicMapService ...

  6. Android基础新手教程——4.3.2 BroadcastReceiver庖丁解牛

    Android基础新手教程--4.3.2 BroadcastReceiver庖丁解牛 标签(空格分隔): Android基础新手教程 本节引言: 上节我们对BroadcastReceiver已经有了一 ...

  7. POJ 1258 Agri-Net (最小生成树+Prim)

    Agri-Net Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 39820   Accepted: 16192 Descri ...

  8. 用Hexo搭建个人博客

    博客地址: http://astraylinux.com/ 文章地址: http://astraylinux.com/2015/06/02/linux-Init-Hexo/ Step 1 Instal ...

  9. Android中App可分配内存的大小

    现在真实测试结果: 1,为了搞清楚每个应用程序在Android系统中最多可分配多少内存空间,我们使用了真机进行测试,测试机型为魅族MX4 Pro,3G内存. 测试方法是直接申请一块较大的内存空间,看应 ...

  10. 123.static静态函数和函数模板

    #include <iostream> using namespace std; //static成员,每个类型都会实例化,创建一个变量,类型一致则共享,否则不共享 template &l ...