https://www.2cto.com/database/201806/752139.html
用了一段時間的Mybatis了,對於$和#的用法老是很迷糊,特此記下加深記憶。 簡單來說 #{} 會在將參數加上引號,例如: SELECT * FROM user WHERE username=#{username} ; 帶上參數后的SQL語句即: SELECT * FROM user WHERE username="XuLiTong" ; 而${}並不會在給參數加上引號,例如: SELECT * FROM user ORDER BY ${id} DESC LIMIT #{offset},#{limit}; 帶上參數后的SQL語句為: SELECT * FROM user ORDER BY id DESC LIMIT 0,10; 可見,mybatis對參數沒有進行任何的處理。通常${}用於GROUP BY,ORDER BY ,LIMIT等的后面。 但是,實際應用中,並不提倡使用 ${},因為使用 #{} 寫法,除了可以防止sql注入以外,還能在參數里含有單引號的時候自動轉義。