Mybatis使用IN语句查询

Mybatis使用IN语句查询一 简介在 SQL 语法中如果我们想使用 in 的话直接可以像如下一样使用 select fromHealthCo 4 3 但是如果在 MyBatis 中的使用 in 的话 像如下去做的话 肯定会报错 Map lt String Object gt selectByUser Param useType StringuseT

一、简介

 

在SQL语法中如果我们想使用in的话直接可以像如下一样使用:

select * from HealthCoupon where useType in ( '4' , '3' )

但是如果在MyBatis中的使用in的话,像如下去做的话,肯定会报错:

 

 Map 
  
    selectByUserId(@Param("useType") String useType) 
    
  

 

其中useType=”2,3″;这样的写法,看似很简单,但是MyBatis不支持这样操作,可以用$进行替换,如下方式即可运行

 

 Map 
  
    selectByUserId(@Param("useType") String useType) 
    
  

 

#方式能够很大程度防止sql注入,$方式无法防止sql注入,所以还是推荐使用#方式,参考以下三种方式。

 

MyBatis中提供了foreach语句实现IN查询,foreach语法如下:

 

foreach语句中, collection属性的参数类型可以使:List、数组、map集合 ​ collection: 必须跟mapper.java中@Param标签指定的元素名一样 ​ item: 表示在迭代过程中每一个元素的别名,可以随便起名,但是必须跟元素中的#{}里面的名称一样。    index:表示在迭代过程中每次迭代到的位置(下标)    open:前缀, sql语句中集合都必须用小括号()括起来 ​ close:后缀    separator:分隔符,表示迭代时每个元素之间以什么分隔

正确的写法有以下几种写法:

 

(一)、selectByIdSet(List idList)

 

如果参数的类型是List, 则在使用时,collection属性要必须指定为 list

 

List 
  
    selectByIdSet(List idList); 
    
  

 

如果参数的类型是Array,则在使用时,collection属性要必须指定为 array

List 
  
    selectByIdSet(String[] idList); 
    
  

 

当查询的参数有多个时,有两种方式可以实现,一种是使用@Param(“xxx”)进行参数绑定,另一种可以通过Map来传参数。

 

3.1 @Param(“xxx”)方式

List 
  
    selectByIdSet(@Param("name")String name, @Param("ids")String[] idList); 
    
  

 

3.2 Map方式

Map 
  
    params = new HashMap 
   
     (2); params.put("name", name); params.put("idList", ids); mapper.selectByIdSet(params); 
     
    
  
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/200499.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月20日 上午10:42
下一篇 2026年3月20日 上午10:42


相关推荐

  • 计算机网络bs/cs区别_bs嵌入cs

    计算机网络bs/cs区别_bs嵌入csCS什么是CS?CS(Client/Server)指客户端、服务器架构模式。客户端需要安装专用的客户端软件。CS的优点、特点1.交互性强2.存取模式安全3.网络通信量低4.响应速度快5.利于处理大量数据●能充分发挥客户端PC的处理能力,很多工作可以在客户端处理后再提交给服务器,所以CS客户端响应速度快。●操作界面漂亮、形式多样,可以充分满足客户自身的个性化要求。●C/S结构的管理信息系统…

    2022年10月17日
    6
  • OpenClaw本地部署vs云服务器:2026全场景选型与落地实操指南

    OpenClaw本地部署vs云服务器:2026全场景选型与落地实操指南

    2026年3月16日
    2
  • java读取系统环境变量,java读取系统环境变量

    java读取系统环境变量,java读取系统环境变量importjava io IOException importjava io InputStream importjava util Enumeration importjava util Iterator importjava util Map importjava util Properties publicclassR publicstatic

    2026年3月19日
    2
  • plsqldev8.0下载和注册码

    plsqldev8.0下载和注册码[b]关键词:PL/SQL,下载,plsqldev,注册码,plsqldev711,汉化文件[/b]PL/SQLDeveloper是一种集成的开发环境,专门用于开发、测试、调试和优化OraclePL/SQL存储程序单元,比如触发器等。PL/SQLDeveloper功能十分全面,大大缩短了程序员的开发周期。[url]http://www.kutoku.info/software…

    2022年4月25日
    56
  • qt录制屏幕_iphone录屏转gif

    qt录制屏幕_iphone录屏转gif一、说明:不断地截取选中的区域,然后将其制作成gif动图。二、效果图:1、可设置要录制屏幕的宽高,支持右下角直接拉动改变.2、可设置变宽的宽度3、可设置录屏控件的背景颜色4、可设置录制的帧数5、录制区域可自由拖动选择三、代码:1、main.cpp#pragmaexecution_character_set(“utf-8”)#include”gifwidget.h”#include<QApplication>#include<QTe

    2026年2月4日
    7
  • AI门户

    AI门户

    2026年3月13日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号