当我们使用mybatis时,在where中会用到 in 如:

where name in ('Jana','Tom');

我们可以在sql中直接写 name in ('Jana','Tom') 或者 name in (${names})  (备注:String names = "'Jana','Tom'"; 使用$时会引起sql注入安全问题)

但是我们无法在sql中直接写 name in (#{names});

会报参数个数错误,因为'Jana','Tom'会被解析成两个传参

String[] names={"Jana","Tom"};

此时要用foreach函数:

name in
<foreach collection="names" item="name" index="index" open="(" close=")" separator=",">
#{name}
</foreach>

解析为:

name in (?,?),然后利用names传入参数

关于参数的形式,可以是数组形式可以是List形式:

1.当只传入names变量时,collection必须指定array或list类型:

public List<User> findInfos(String[] names);
<select id="findInfos" resultMap="UserMap">
SELECT * FROM t_user
WHERE id IN
<foreach collection="array" item="name" index="index" open="(" close=")" separator=",">
#{name}
</foreach>
</select>
public List<User> findInfos(List<String> names);
<select id="findInfos" resultMap="UserMap">
SELECT * FROM t_user
WHERE id IN
<foreach collection="list" item="name" index="index" open="(" close=")" separator=",">
#{name}
</foreach>
</select>

注意:array传入的时候parameterType可以是"Integer[]" ,可以是"int[]",但不可以是"String[]"

报错 Could not resolve type alias 'string[]'. Cannot find class: string[]

2.当有其他变量时,利用map传入参数集时,可以直接将变量写在collection中

Map<String,Object> params = new HashMap<>();
params.put("class",class);
params.put("names",names);
<select id="findInfos" resultMap="UserMap">
SELECT * FROM t_user
WHERE id IN
<foreach collection="names" item="name" index="index" open="(" close=")" separator=",">
#{name}
</foreach>
</select>

mybatis where 中in的使用的更多相关文章

  1. Mybatis框架中实现双向一对多关系映射

    学习过Hibernate框架的伙伴们很容易就能简单的配置各种映射关系(Hibernate框架的映射关系在我的blogs中也有详细的讲解),但是在Mybatis框架中我们又如何去实现 一对多的关系映射呢 ...

  2. 详解Java的MyBatis框架中SQL语句映射部分的编写

    这篇文章主要介绍了Java的MyBatis框架中SQL语句映射部分的编写,文中分为resultMap和增删查改实现两个部分来讲解,需要的朋友可以参考下 1.resultMap SQL 映射XML 文件 ...

  3. 【转】MyBatis学习总结(三)——优化MyBatis配置文件中的配置

    [转]MyBatis学习总结(三)——优化MyBatis配置文件中的配置 一.连接数据库的配置单独放在一个properties文件中 之前,我们是直接将数据库的连接配置信息写在了MyBatis的con ...

  4. SpringBoot Mybatis项目中的多数据源支持

    1.概述 有时项目里里需要抽取不同系统中的数据源,需要访问不同的数据库,本文介绍在Springboot+Mybatis项目中如何支持多数据源操作. 有需要的同学可以下载 示例代码 项目结构如下: 2. ...

  5. MyBatis Generator中文文档

    MyBatis Generator中文文档 MyBatis Generator中文文档地址: http://mbg.cndocs.tk/ 该中文文档由于尽可能和原文内容一致,所以有些地方如果不熟悉,看 ...

  6. Mybatis系列(二):优化MyBatis配置文件中的配置和解决字段名与实体类属性名不相同的冲突

    原文链接:http://www.cnblogs.com/xdp-gacl/p/4264301.html     http://www.cnblogs.com/xdp-gacl/p/4264425.ht ...

  7. SpringMVC+MyBatis开发中指定callSettersOnNulls,可解决返回字段不全的问题

    Spring+MyBatis开发过程中,在xxMapper.xml配置文件进行select查询时resultType="map",如果要查询的字段是空值,在返回的map中会出现找不 ...

  8. MyBatis配置文件中的标签mappers的子标签mapper的url属性

    在浏览器中输入file:/可以打开访达根目录,file:后面至少跟一个杠 MyBatis配置文件中的标签mappers的子标签mapper的url属性中file:后面至少要跟两个杠

  9. mybatis框架中XxxxMaper.xml的文件

    我们知道在mybatis框架中,config.xml中会关联到许多的XxxxMapper的xml文件,这些文件又对应着一个个的接口,来观察下这些xml文件 从以下这个文件为例子: <?xml v ...

  10. Mybatis 学习过程中出现空指针异常的错误【已解决】

    Mybatis 学习过程中出现空指针异常的错误[已解决] 以下是写的小测试的代码 bean层 Player类(篮球队队员) bean层 Team类(篮球队) dao层 TeamDao.xml配置文件 ...

随机推荐

  1. 树——sum-root-to-leaf-numbers(根到叶节点数字之和)

    问题: Given a binary tree containing digits from0-9only, each root-to-leaf path could represent a numb ...

  2. 四、MyBatis-映射文件

    映射文件指导着MyBatis如何进行数据库增删改查,有着非常重要的意义. <?xml version="1.0" encoding="UTF-8" ?&g ...

  3. MAN PVCREATE

    PVCREATE(8)                                                        PVCREATE(8) NAME/名称       pvcreat ...

  4. php substr_count()函数 语法

    php substr_count()函数 语法 作用:统计一个字符串,在另一个字符串中出现次数大理石量具 语法:substr_count(string,substring,start,length) ...

  5. Python_002(基础知识)

    1.格式化输出 %s:字符串的占位符,可以放置任何内容(数字) 代码展示:%去除法 admin_input1 = input("请输入用户名:") pass_input = inp ...

  6. GIS矢量大数据采集

    1.使用什么工具采集 2.在哪个网站采集 3.采集哪一种数据 >>地理大数据公众号 >>大数据公众号 >>智能数据湖公众号 点.线.面.体 可视化 >> ...

  7. Unregistering JMX-exposed beans on shutdown解决方法:

    Unregistering JMX-exposed beans on shutdown解决方法: 加入依赖如下: <dependency>   <groupId>org.spr ...

  8. 使用iScroll时input复选框不能选中解决方法

    http://blog.csdn.net/xw505501936/article/details/51886018

  9. HttpClient请求服务器图片

    我们先引入一个IO流相关的Jar包, 从apache下载 下载后,jar包和源码如图: 我们只需要将jar包引入项目: 之后我们使用FileUtils这个类,其中有一个文件复制方法. 我们将请求的图片 ...

  10. idhttpserver 下载文件

    procedure TForm30.IdHTTPServer1CommandGet(AContext: TIdContext; ARequestInfo: TIdHTTPRequestInfo; AR ...