Mapper.xml 中 #{} 和 ${} 的 区别

简单说

  • #{ para } 产生的是 PreparedStatement 的占位符
  • ${ something } 就相当于将字符串插入到 SQL 当中

在实际中我们尽可能使用前者而并非后者, 因为前者会对你插入的字符串做个简单的转换,能在一定程度上防止 SQL 注入。
举个例子

假设我们前端没有做验证

SELECT * FROM test WHERE name = ${name};

而有人选择传入参数 'Draper' OR 1=1 那么整体的 SQL 语句就会变成

SELECT * FROM test WHERE name = 'Draper' OR 1=1; 

那么无论有没有 Draper 他都会检索多条记录。

所以在实际中尽可能选择 #{},除非迫不得已

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容