簡單來說 #{} 會在將參數加上引號,例如:
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注入以外,還能在參數裏含有單引號的時候自動轉義。