#{}是预编译处理,${}是字符串替换。mybatis在处理#{}时,会将sql中的#{}替换为?号,调用PreparedStatement的set方法来赋值;mybatis在处理${}时,就是把${}替换成变量的值。使用#{}可以有效的防止SQL注入,提高系统安全性。
PreparedStatement的setString 是使得java中的字符串拼装为sql中的字符串, setInt方法是把java中的int转为sql中的int(int类型的java与sql没区别,String类型的话就需要加单引号,使用setString的话,该方法会自动加上)