欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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 注入的问题。