在 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 會將它轉換成一個空字符串。因此,在使用模糊查詢時,需要對參數進行非空判斷,避免查詢結果異常。