不知大家是否遇到过这样问题?
当使用mybatis做数据库连接时。如果使用了in(值1,值2,值3...)作数据库查询时,会发生同一条sql语句,同样的参数。在mybatis里查询不了数据,然后把sql语句复制到plsql上查询就有数据。这是为什么呢?
这是因为Mybatis会帮我们进行sql注入拦截,Mybatis如果采用#的形式设置参数,Mybatis会进行sql注入的过滤。如果采用的是$,Mybatis不会进行sql注入过滤,而是直接将参入的内容输出为sql语句。
以下是我的一个小案例:
这样mybatis上就能查到数据了。
PS:sql语句虽然不一样了。不过查询结果一样的。我只是省了一些逻辑。
当然,这里会出现这样的原因也有可能是因为我后台传进来给in(的值)是通过字符串拼接的方式所以才会出现这样的结果。
领取专属 10元无门槛券
私享最新 技术干货