区别: 1)#{ }是预编译处理,MyBatis在处理#{ }时,会将sql中的#{ }替换为?,然后调用PreparedStatement的set方法来赋值,传入字符串后,会在值两边加上单引号,如传入1,2,3就会变成’1,2,3’。 2)${}是字符串替换,Mybatis在处理时,会将其替换为变量的值,在like和order by后使用 注意:使用${ }会导致SQL注入,不利于系统的安全性!