当前位置:首页 > database > mybatis > 正文内容

mybatis中${} 和#{} 区别

淙嶙5年前 (2020-07-17)mybatis1012

{} : 占位符

${} : 拼接符

区别

{}: 为参数占位,为预编译中的 “?”;

${}: 为字符串拼接串,在(预)编译时直接替换成实际的变量 在执行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注入

${} 不可以

相关文章

mybatis源码解析

mybatis源码解析

总结:1.存放流程 注解中取sql放入sqlSource,sqlSource放入MappedStatement,MappedStatement放入configuration[SqlSessionFac...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。