Mybatis 最近知识总结(1)

来源:互联网 发布:税收征管数据质量方案 编辑:程序博客网 时间:2024/06/07 00:17
-- 你不得不承认 在项目中 如果不遇见问题 你是不会去了解#{} 和${} 的区别的-- 我见过好多项目中用的是${} 但是不提倡  
-- (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 注入的问题。 

原创粉丝点击