Mybatis 小记

1,mybatis 中 $ # 区别

mybatis 动态传参的两种方式

#{ }在动态解析的时候,会将#{ } 解析为一个预编译阶段的一个标记符号?,在预处理阶段才会替换

${ }在动态解析的时候,会将${ } 直接就会惊醒变量替换

优先使用 #{}。因为 ${} 会导致 sql 注入的问题

select * from ${tableName} where name = #{name}

表名如果是:user; delete user; -- 

动态解析的sql 就会变成:

select * from user; delete user; -- where name = ?;

这样sql 就注入进去了,但是表明只能用${ }

 #将传入的数据都当成一个字符串,会对自动传入的数据加一个双引号

 $将传入的数据直接显示生成在sql中

$方式一般用于传入数据库对象,例如传入表名

原文地址:https://www.cnblogs.com/pickKnow/p/11163245.html