本文共 422 字,大约阅读时间需要 1 分钟。
MyBitis 中 # 和 $ 区别
- $ { } 在Properties文件中是变量占位符,属于静态文本替换,比如${ driver} 可以代表 com.mysql.jdbc.Driver。 在MyBitis映射文件中, ${ }属于拼接符。 $将传入的数据直接显示生成在sql中。如:where username= ${username},如果传入的值是111,那么解析成sql时的值为where username=111;也就是在字符替换后不会有引号。这就可能造成sql注入问题。参数使用的是默认的value或者@param中的名字。
- #{ }是sql的参数占位符,Mybitis会自动将#{ }替换为?,传入的数据都单成字符串,也就是都加上引号,类似JDBC的PreparedStatement,这样能避免sql注入问题。参数使用的是对应方法中的参数名字或@param中的名字。 综上,除非传入的参数是表名或列名,一般使用#{ }比较好。
转载地址:http://hnerj.baihongyu.com/