#{}表示一个占位符号,通过#{}可以实现preparedStatement向占位符中设置值,自动进行java类型和jdbc类型转换,#{}可以有效防止sql注入,因为无论输入的是什么,只表示一个占位符号,不会有可执行的sql语句。 #{}可以接收简单类型值或pojo属性值。如果parameterType接收简单类型参数,#{}括号中可以是value,也可以是其它名称。如果parameterType接收pojo类型参数,#{}括号中必须是pojo的属性值。
${}表示拼接sql串,通过${}可以将parameterType 传入的内容拼接在sql中且不进行jdbc类型转换,使用闭合字符的方法,可以插入恶意代码,对数据库进行增删改查操作, ${}可以接收简单类型值或pojo属性值。