Mybatis的sql注入拦截
Posted 记录java路上的小问题
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mybatis的sql注入拦截相关的知识,希望对你有一定的参考价值。
不知大家是否遇到过这样问题?
当使用mybatis做数据库连接时。如果使用了in(值1,值2,值3...)作数据库查询时,会发生同一条sql语句,同样的参数。在mybatis里查询不了数据,然后把sql语句复制到plsql上查询就有数据。这是为什么呢?
这是因为Mybatis会帮我们进行sql注入拦截,Mybatis如果采用#{xxx}的形式设置参数,Mybatis会进行sql注入的过滤。如果采用的是${xxx},Mybatis不会进行sql注入过滤,而是直接将参入的内容输出为sql语句。
以下是我的一个小案例:
这样mybatis上就能查到数据了。
PS:sql语句虽然不一样了。不过查询结果一样的。我只是省了一些逻辑。
当然,这里会出现这样的原因也有可能是因为我后台传进来给in(的值)是通过字符串拼接的方式所以才会出现这样的结果。
以上是关于Mybatis的sql注入拦截的主要内容,如果未能解决你的问题,请参考以下文章