Mybatis的mapper文件中$和#的用法及區別詳解

用瞭一段時間的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註入以外,還能在參數裡含有單引號的時候自動轉義。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *