mybatis的#{}和${}
${}一般用于传输数据库的对象,如表名、字段名等
#{}与${}的区别可以简单总结如下:
#{}将传入的参数当成一个字符串,会给传入的参数加一个双引号,#{} 传参在进行SQL预编译时,会把参数部分用一个占位符 ? 代替,这样可以防止 SQL注入。
${}将传入的参数直接显示生成在sql中,不会添加引号,就是简单的字符串替换,并且该参数会参加SQL的预编译,需要手动过滤参数防止 SQL注入。
#{}能够很大程度上防止sql注入,${}无法防止sql注入
一般能用#的就别用$. MyBatis排序时使用order by 动态参数时需要注意,用$而不是#