#{}和${}的区别

原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 动态参数时须要注意,使用${}而不用#{}。