今天看啥  ›  专栏  ›  程序员鱼皮

被拷打已老实!面试官问我 #{} 和 ${} 的区别

程序员鱼皮  · 公众号  ·  · 2024-06-26 13:30
    

文章预览

引言:在使用 MyBatis 进行数据库操作时, #{} 和 ${} 的区别是面试中常见的问题,对理解如何在 MyBatis 中安全有效地处理 SQL 语句至关重要。正确使用这两种占位符不仅影响应用的安全性,还涉及到性能优化。 题目 #{} 和 ${} 的区别是什么? 推荐解析 预编译与直接替换 面试官问了我这个问题,直接把我问老实了,求放过,赶忙来写下以下思考: 1) #{} :使用 #{} 时,MyBatis 为 SQL 语句的参数生成一个预编译语句,并通过参数占位符( ? )来代替实际的参数值。这种方式是安全的,因为它防止了 SQL 注入攻击,参数值在发送到数据库之前不会被解析为 SQL 的一部分。 如果你有一个查询用户的操作,你可以这样写: SELECT  *  FROM   users   WHERE   id  =  #{userId} 2) ${} :相反,使用 ${} 时,参数值被直接替换到 SQL 语句中。这种方式虽然灵活,可以动态 ………………………………

原文地址:访问原文地址
快照地址: 访问文章快照
总结与预览地址:访问总结与预览