在 MyBatis 中,可以使用${}或#{}来拼接 SQL 语句中的参数。在进行模糊查询时,需要使用通配符 % 表示任意字符,具体写法如下:
<select id="selectUsersByName" resultType="User">
SELECT * FROM user WHERE name LIKE '%${name}%'
</select>
在这种方式下,${}会直接将传入的参数拼接到 SQL 语句中,容易受到 SQL 注入攻击。
<select id="selectUsersByName" resultType="User">
SELECT * FROM user WHERE name LIKE CONCAT('%', #{name}, '%')
</select>
在这种方式下,#{}会使用预编译语句来处理参数,可以防止 SQL 注入攻击。同时,MyBatis 还提供了CONCAT()函数来连接字符串,避免使用字符串拼接运算符+。
需要注意的是,使用#{}时,如果传入的参数是 null,MyBatis 会将它转换成一个空字符串。因此,在使用模糊查询时,需要对参数进行非空判断,避免查询结果异常。