Error querying database. Cause: java.sql.SQLSyntaxErrorException

Error querying database. Cause: java.sql.SQLSyntaxErrorException_第1张图片

 

mybatis模糊查询时,不想在调用方法时参数加%,所以我使用拼接参数的方 式设置Sql:

Error querying database. Cause: java.sql.SQLSyntaxErrorException_第2张图片

问题在于UserMapper.xml配置sql模糊查询语句出了问题。

Error querying database. Cause: java.sql.SQLSyntaxErrorException_第3张图片

倒数第二行是在测试类的时候模糊传入,没有问题

Error querying database. Cause: java.sql.SQLSyntaxErrorException_第4张图片

 倒数第一行有问题,正确配置如下

select * from user where username like '%${value}%'

Error querying database. Cause: java.sql.SQLSyntaxErrorException_第5张图片

1        #表示sql模板的占位符,$表示将字符串拼接到sql模板中。

2        #可以防止sql注入,一般能用#就不用$。

3        ${}内部的参数名必须写value。

#是传递预编译的sql语句;$是普通传递sql语句(有sql注入的风险)

更加完美的解决方案 (既想防止sql注入,不想在测试类中写%匹配符)

允许我们在 Sql语句以外创建一个变量,并可以将其绑定到当 前的Sql语句中

Error querying database. Cause: java.sql.SQLSyntaxErrorException_第6张图片 

Error querying database. Cause: java.sql.SQLSyntaxErrorException_第7张图片 

 

 

 

你可能感兴趣的:(JAVA项目bug总结,数据库,java,sql)