本篇文章小编给大家分享一下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函数时设置","分格,可以直接切分出三个字符串作为数组的元素。
茶杯头甜蜜终章dlc 官方手机版v1.0.0.3
下载火柴人传说暗影格斗内置菜单 最新版v3.0.1
下载荒野乱斗测试服 安卓版v61.10.3
下载荒野乱斗彩虹服 安卓版v61.10.3
下载寒霜启示录 安卓版v1.25.10
寒霜启示录是一款生存模拟游戏,不少玩家可能对于末日都有着自己
末日城堡免广告版 安卓最新版v0.7.1
末日城堡免广告版是一款非常好玩的模拟经营类游戏,内部可以不看
甜蜜人生模拟器 最新版v1.4.5
甜蜜人生模拟器是一款非常好玩的模拟恋爱手游,玩家在这里能够对
武器锻造师内置功能菜单 v10.4
武器锻造师内置菜单版是游戏的破解版本,在该版本中为玩家提供了
开放空间overfield 安卓版v1.0.5
开放空间Overfield是一款箱庭养成经营手游,让你在广阔