#{}和${}的區別

原sql語句:

delete from
ups_role_permission_dataparams
where role_id = #{roleId,jdbcType=INTEGER}

在這裏用到了#{},使用#時:sql

一、用來傳入參數,sql在解析的時候會加上" ",當成字符串來解析 ,如這裏 role_id = "roleid";數據庫

二、#{}可以很大程度上防止sql注入;app

延伸:

一、用${}傳入數據直接顯示在生成的sql中,如上面的語句,用role_id = ${roleId,jdbcType=INTEGER},那麼sql在解析的時候值爲role_id = roleid,執行時會報錯;spa

二、${}方式沒法防止sql注入;code

三、$通常用入傳入數據庫對象,好比數據庫表名;對象

四、能用#{}時儘可能用#{};blog

注意:Mybaties排序時使用order by 動態參數時須要注意,使用${}而不用#{}。

相關文章
相關標籤/搜索