MyBatis中 like 的使用

使用数据库

MySQLsql

用法1

<if test="carplate!=null and carplate!=''">
<![CDATA[
AND vehicle.carplate like '%${carplate}%'
]]>
</if>

用法2

<if test="carplate!=null and carplate!=''">
<![CDATA[
AND vehicle.carplate like CONCAT('%',#{carplate},'%')
]]>
</if>

两种用法比较

效果上是同样的。数据库

可是用法1是有sql注入的风险的。好比:若是 carplate 参数输入值为spa

123%’;drop table ttt; --日志

这样可能会执行 delete user 语句。code

★试验一把sql注入,真的发生了

执行并查看打印的日志,xml

Sql格式没问题,而且执行了 DROP TABLE ttt; 的操做。blog

这样就把 ttt 表删除了。table

使用用法2,则没有这个问题。class

相关文章
相关标签/搜索