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



    #{} 和 ${} 的区别

    (1)#{} 为参数占位符 ?,即sql 预编译,动态解析 -> 预编译 -> 执行
    ${} 为字符串替换,即 sql 拼接,动态解析 -> 编译 -> 执行

    (2)#{} 的变量替换是在DBMS 中,变量替换后,#{} 对应的变量自动加上单引号 ,#{} 能防止sql 注入
    ${} 的变量替换是在 DBMS 外,变量替换后,${} 对应的变量不会加上单引号,${} 不能防止sql 注入

    #{} 和 ${} 在使用中的技巧和建议

    (1)不论是单个参数,还是多个参数,一律都建议使用注解@Param("")
    (2)能用 #{} 的地方就用 #{},不用或少用 ${}
    (3)表名作参数时,必须用 ${}。如:select * from ${tableName}
    (4)order by 时,必须用 ${}。如:select * from t_user order by ${columnName}
    (5)使用 ${} 时,要注意何时加或不加单引号,即 ${} 和 '${}'
             假设传入参数为 1
            #{}:select * from t_user where uid=#{uid}
            ${}:select * from t_user where uid='${uid}'

  • 相关阅读:
    第二次作业
    第一次作业
    2019春总结作业
    2019春第四次课程设计报告
    2019春第三次课程设计报告
    2019春第二次课程设计报告
    2019春第一次课程设计报告
    第十二周作业
    2019第十一周作业
    2019第十周作业
  • 原文地址:https://www.cnblogs.com/shijianchuzhenzhi/p/12954784.html
Copyright © 2020-2023  润新知