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注入
${} 不可以
