本篇文章小编给大家分享一下mybatis in查询传入String方式代码示例,文章代码介绍的很详细,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看。
mybatis in查询传入String
在使用 mybaits 进行 in 查询时,传入String,如1,2,3,发现查询的结果并非我们想要的
这是因为#{}编译完自动加双引号“” 也就是变成in (“1,2,3”)
如果想要获得我们想要的结果,可以使用${},编译完是这样的 in (1,2,3)
例如,查询铃音库中多首铃音的总数量
如果传入参数是List或者Array,则直接用foreach即可
例如
mybatis in查询传入字符串参数
sql里的in操作符允许我们在where子句中规定多个值进行匹配。
语法:
SELECT column_name(s) FROM table_name WHERE column_name IN (value1,value2,...);
在mybatis里,可以通过传入数组或容器(array、list、set、map)通过foreach标签来给in操作符指定参数。
问题:想要从org表中匹配字段org_id在OR001、OR002、OR004中的数据,org_id是字符串类型的字段。
常规方法是在mapper.java中传入一个包含"OR001"、“OR002”、"OR004"的list对象orgIdList,在xml中:
SELECT * from org where org_id in#{orgId}
如果要作为in的匹配参数的多个值在一个String类型的对象orgs中,想直接通过String传入,有两种实现方式。
1、在xml中用${orgs}把整个String作为sql的一部分
SELECT * from org where org_id in (${orgs})
这种写法需要关注字符串orgs的内容在拼入之后,整个sql是否是符合语法的,按上面的需求和sql写法,就要求作为sql一部分的orgs的值为"‘OR001',‘OR002',‘OR004'"。
参数直接以sql一部分的方式作为查询语句存在sql注入的风险,有一些项目可能会一刀切地限制开发者不允许用这种写法。
2、在xml的foreach标签里,传入collection属性时将字符串用split函数转为数组
SELECT * from org where org_id in#{orgId}
在这里传入的orgs字符串的值可以为"OR001,OR002,OR004",在调用split函数时设置","分格,可以直接切分出三个字符串作为数组的元素。
忍者必须死34399账号登录版 最新版v1.0.138v2.0.72
下载勇者秘境oppo版 安卓版v1.0.5
下载忍者必须死3一加版 最新版v1.0.138v2.0.72
下载绝世仙王官方正版 最新安卓版v1.0.49
下载Goat Simulator 3手机版 安卓版v1.0.8.2
Goat Simulator 3手机版是一个非常有趣的模拟游
Goat Simulator 3国际服 安卓版v1.0.8.2
Goat Simulator 3国际版是一个非常有趣的山羊模
烟花燃放模拟器中文版 2025最新版v1.0
烟花燃放模拟器是款仿真的烟花绽放模拟器类型单机小游戏,全方位
我的世界动漫世界 手机版v友y整合
我的世界动漫世界模组整合包是一款加入了动漫元素的素材整合包,
我的世界贝爷生存整合包 最新版v隔壁老王
我的世界MITE贝爷生存整合包是一款根据原版MC制作的魔改整