在项目中一直在使用Mybatis 框架,由于在传参数的时候一直用 # ,从来没有用过$ ,所以也没有注意到这个区别。今天在面试的时候,被问到。没答上来 ,实在是感觉丢人。
通常的写法是这样的:
1.使用 #
select * from tableName where name =#{name}
这样 Mybatis 会认为 # {name } 是一个 字符串 'name', 比如 name 传的是 zhangsan , 那么在执行的时候就会变成
select * from tableName where name = 'zhangsan'.
2 . 使用 $
select * from tableName where name = ${name } , name 传的是zhangsan ,执行的时候就会变成
select * from tableName where name = zhangsan
总结:
主要区别就是 # 能够防止sql注入。 在项目开发总能用# 的就 用# 。