Springboot集成Druid,sql报错 Error querying database. Cause: java.sql.SQLException:

项目集成了阿里的 Druid 数据库连接池,其中一句模糊查询报了如下错误:
Springboot集成Druid,sql报错 Error querying database. Cause: java.sql.SQLException:_第1张图片
重点在这里:
Error querying database. Cause: java.sql.SQLException: sql injection violation, syntax error: syntax error, error in :‘name like ‘%’ ? ‘%’) tmp_count’, expect RPAREN, actual QUES pos 72, line 1, column 71, token QUES : select count(0) from (SELECT * FROM ddr_role where rolename like ‘%’ ? ‘%’) tmp_count

问题大致是因为项目集成了Druid,所以SQL在模糊查询那部分会出现SQL注入的问题。

报错SQL:

<select id="findRoleList" resultMap="role">
        SELECT * FROM `ddr_role` where rolename like '%',#{rootname},'%'
</select>

修改后的SQL:

<select id="findRoleList" resultMap="role">
        SELECT * FROM `ddr_role` where rolename like concat('%',#{rootname,jdbcType=VARCHAR},'%')
</select>

希望对大家有帮助吖~

你可能感兴趣的:(报错处理)