zoukankan      html  css  js  c++  java
  • Mybatis中#和$区别(带脑图)

    零、引言

    使用 #{name} 的时候,MyBatis会进行预编译,防止SQL注入的问题(官方话)
    用一个通俗一点的例子来解释,比如有如下MyBatis的SQL语句

    一、最正确的用法

    说明:如果name的类型为String值为LCF,columnName的类型为String值为 id
    上述SQL翻译结果是:
    1. #{name} 会根据传入数据的类型进行预编译,所以在生成SQL的时候自动加上了单引号。
    2.${columnName} 会直接将结果替换进来。

    二、反例说明

    说明:基本类型和值如上所述,该SQL翻译出来的结果是什么?
    仔细看LCF是没有单引号引起来的,反倒是 id 被单引号括起来了。

    三、结论

    #会进行预编译,防止SQL注入。
    $会被直接进行字符替换,容易造成SQL注入。

    #####################LCF###############2017-06-21#####################
  • 相关阅读:
    88. Merge Sorted Array
    87. Scramble String
    86. Partition List
    85. Maximal Rectangle
    84. Largest Rectangle in Histogram
    83. Remove Duplicates from Sorted List
    82. Remove Duplicates from Sorted List II
    81. Search in Rotated Sorted Array II
    80. Remove Duplicates from Sorted Array II
    计算几何——点线关系(叉积)poj2318
  • 原文地址:https://www.cnblogs.com/LiuChunfu/p/7062297.html
Copyright © 2011-2022 走看看