您的位置:首页 > 其它

mybatis中${}和#{}的区别_chenjie的博客

2020-08-12 15:52 507 查看

mybatis中${}和#{}的区别

#{}的说明:

假如现在有如下sql语句:

select id,username from t_user where age = #{age}

首先这条sql语句中的#{}会被mybatis解析成?,也就是成了这样
select id,username from t_user where age = ?

再通过preparedstatement给占位符设置参数为22的话,那个sql语句就变成
select id,username from t_user where age = '22'

使用#{}能有效避免sql注入

${}的说明:

假如现在有如下sql语句:

select id,username from t_user order by ${age}

这条sql中的${age}不会被解析成?,也不会被preparedstatement给设置参数。如果你的参数是age,那么这条sql语句就被拼接变成了:
select id,username from t_user order by age

如何选用:

#{}:当传入的参数时同数据库进行交互的时候,使用#{}.
${}:当插入的参数时作为SQL执行的一部分的时候必须使用它

简单的判断:传入的参数在SQL中是否能够加上单引号。可以加单引号使用#{};不能加单引号使用${}。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: