在 MyBatis 中,可以使用${}或#{}來拼接 SQL 語句中的參數(shù)。在進(jìn)行模糊查詢時,需要使用通配符 % 表示任意字符,具體寫法如下:
- 使用${}:
<select id="selectUsersByName" resultType="User">
SELECT * FROM user WHERE name LIKE '%${name}%'
</select>
在這種方式下,${}會直接將傳入的參數(shù)拼接到 SQL 語句中,容易受到 SQL 注入攻擊。
- 使用#{}:
<select id="selectUsersByName" resultType="User">
SELECT * FROM user WHERE name LIKE CONCAT('%', #{name}, '%')
</select>
在這種方式下,#{}會使用預(yù)編譯語句來處理參數(shù),可以防止 SQL 注入攻擊。同時,MyBatis 還提供了CONCAT()函數(shù)來連接字符串,避免使用字符串拼接運(yùn)算符+。
需要注意的是,使用#{}時,如果傳入的參數(shù)是 null,MyBatis 會將它轉(zhuǎn)換成一個空字符串。因此,在使用模糊查詢時,需要對參數(shù)進(jìn)行非空判斷,避免查詢結(jié)果異常。