解决 Error querying database. Cause: java.sql.SQLException: sql injection violation…

最近在开发的时候老板的需求就是将模糊搜索和PageHelper 结合起来将数据显示的同一个表格中,我在实操的时候碰到了一个上面这样的错误!Druid连接池给我报错。具体错误如下:

### Error querying database.  Cause: java.sql.SQLException: sql injection violation, dbType mysql, , druid-version 1.2.5, syntax error: syntax error, error in :'%'); LIMIT ? , pos 93, line 3, column 59, token LIMIT : select *
        from i_family
        where Fml_Name like CONCAT(CONCAT('%', ?), '%'); LIMIT ? 

有点蒙蔽一开始,因为我自己在单独使用的时候并没报这个错误,但是和Pagehelper结合在一起的时候就给我保证错误。前提是我这两个功能都是OK的。那么没办法只能硬着头皮看看错在哪了…

在这里插入图片描述
看报的错误就是错在这个地方,这样一看上去好像也没什么错的,但是这确实是错了。为什么?因为你这边多了一个 分号 ; 所以导致了SQL的注入错误。来一起看看正确的是怎么样的!如下图:

在这里插入图片描述说明就是这个问题,那么这个问题会在那呢?那不用说肯定是在mapper.xml 文件中了 仔细检查一下发现真的是自己不小心多加了一个 ; 真的是写时一时爽,报错火葬场!!!!如下图:
在这里插入图片描述
那就把他删除就OK了!!!重启运行之后成功查询,分号 ; 果真是没有了!
在这里插入图片描述

总结

我们在写SQL语句的时候就避免在SQL语句的末尾加上符号,单个使用的时候并不会报错但是组合在一起的时候就会莫名其妙的给你报错!!!!切记啊!!!

收工,下一个bug更可爱!

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐