mybatis中${} 和#{} 区别
{} : 占位符
${} : 拼接符
区别
{}: 为参数占位,为预编译中的 “?”;
${}: 为字符串拼接串,在(预)编译时直接替换成实际的变量 在执行sql的过程中,#{}是在动态解析中可以实时替换的,而${}是以实际值存在.所以一般情况下,sql中只使用#{},而不使用${}.我做过一个动态根据查询or修改一个不确定的表的某些值的.其中表名是需要使用${表名},具体需要修改的值为#{}.
例如:
/*手写代码 ,只供参考*/
<select >
select
<foreach item="columName" collection="columList" separator="," >
${columName}
</foreach>
form ${tableName}
<where>
<foreach item="item" collection="list" separator="," >
${item.columName} = #{item.value}
</foreach>
</where>
</select>
sql注入
{} 可以防止sql注入
${} 不可以