请说明 MyBatis 中防止 SQL 注入的机制,包括 ${} 与 #{} 的区别、底层实现及常见命名区分。
考察说明
考察对 MyBatis 参数绑定与 SQL 预编译机制的理解及安全实践
回答思路
- 解释 #{} 使用预编译占位符,${} 为字符串拼接的安全差异
- 说明 #{} 底层通过 JDBC PreparedStatement 实现预编译
- 提及 ${} 仅适用于表名、列名等非参数场景并需严格校验
- 能举出具体注入场景说明风险与正确做法
本题已收录答题指导
本题附完整参考答案与评分标准
登录后可查看结构化答题指导;也可以直接开一场模拟面试,AI 面试官用本题实时追问并给出评分。