浅谈#{}与${}区别
预编译为什么能一定程度上防止SQL注入
预编译和参数化查询将SQL查询语句和用户提供的输入值分开处理,从而防止SQL注入问题,预编译后SQL结构已经固定,可以防止非法输入参数对SQL结构的影响
#{}与${}区别
- Mybatis在处理#{}时将其替换为?,然后调用PrepareStatement进行赋值,处理${}就是将其替换为变量的值。#{}可以有效防止SQL注入,${}可能出现SQL注入问题。
#{}
如果是字符串类型会将值附上引号然后替换之- ${} 直接将参数的值取出,直接拼接在SQL中