Mybatis 最近知识总结(1)
程序员文章站
2024-01-30 10:51:28
...
-- 你不得不承认 在项目中 如果不遇见问题 你是不会去了解#{} 和${} 的区别的
-- 我见过好多项目中用的是${} 但是不提倡
-- (1)#将传入的数据都当成一个字符串,会对自动传入的数据加一个双引号。
-- 如:order by #job#,如果传入的值是programer,那么解析成sql时的值为order by "programer",如果传入的值是job,则解析成的sql为order by "job"。
-- #{} 在预处理时,会把参数部分用一个占位符 ? 代替 变成如下的 sql 语句
order by ?
-- (2) $将传入的数据直接显示生成在sql中。如:order by $user_id$,如果传入的值是programer,那么解析成sql时的值为order by programer, 如果传入的值是job,则解析成的sql为order by job。
-- ${} 只是简单的字符串替换,在动态解析阶段,该 sql 语句会被解析成
order by job
-- (3) #方式在很大程度上能够防止sql注入。
-- (4) $方式无法防止sql注入。
-- (5) $方式一般用于传入数据库对象,例如传入表名 字段名等。
-- (6) 一般能用#的就别用$。 因为 ${} 会导致 sql 注入的问题。
上一篇: JS 滚动条 顶置
下一篇: 功能:js 点击复制内容功能