mybatis #{} 和${}使用场景
时间: 2023-11-01 08:18:06 浏览: 146
在MyBatis中,#{}和${}是两种不同的占位符使用方式。
#{}用于传递参数,它会将传递的参数值安全地替换到SQL语句中,以防止SQL注入攻击。在SQL执行过程中,#{}会将参数值进行预编译处理,生成一个占位符,并使用PreparedStatement对象来执行SQL语句,这样可以提高执行效率。因此,#{}在编写动态SQL时是更安全和推荐的方式。
${}则是直接将参数值拼接到SQL语句中,没有经过预编译处理。这种方式适用于一些特殊情况,比如在表名、列名等需要动态拼接的地方。但是,由于没有预编译处理,可能存在SQL注入的风险,所以在使用${}时需要特别小心,确保传递的参数是可信的。
综上所述,#{}和${}的使用场景可以总结如下:
- 使用#{}时,适用于传递参数的情况,可以提高SQL执行效率,并且避免SQL注入攻击。
- 使用${}时,适用于一些需要动态拼接的场景,但需要注意防止SQL注入,确保传递的参数是可信的。 <span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* [Mybatis #和$获取参数值的区别以及@param的使用场景](https://blog.csdn.net/Tom098/article/details/103381901)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
- *3* [Mybatis中#和$的区别](https://blog.csdn.net/m0_52388979/article/details/125720091)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]
阅读全文