MyBatis正在爬的坑

换了份工作,开始接触Mybatis,开一篇文章记录一下自己遇到的坑

2018-06-20
今天遇到了一个问题,编好的sql语句在数据库可以执行但是写到程序里边就GG,什么问题呢?一直纠结在程序哪里写错了,找的快要死了!!!

select t.* from table_B where t.usr_id in (#{userIds})

sql语句就是如上这句话,参数是经过处理的原参数为(XXX,YYY,OOO)类似模式,处理之后('XXX','YYY','OOO')

报错为什么呢?想通了很简单,想不通很难受

仅仅是因为系统会将你传进来的 参数作为一个字符串处理,等同于(" 'XXX','YYY','OOO' ") (添加空格纯粹是为了看的更清楚)

原sql语句就会变成select t.* from table_B where t.usr_id in (" 'XXX','YYY','OOO' ")

你的理想sql语句为:select t.* from table_B where t.usr_id in ( 'XXX','YYY','OOO' )

SO,你不会得到任何返回结果,而sql语句在数据库的执行是没有丝毫问题的

转载于:https://www.cnblogs.com/gosun/p/9203190.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值