#{} 和 ${} 的区别 #{}是预编译处理,${}是字符串替换。 Mybatis 在处理#{}时,会将 sql 中的#{}替换为?号,调用 PreparedStatement。 Mybatis 在处理 时 , 就 是 把 {}时,就是把 时,就是把{}替换成变量的值。 使用#{}可以有效的防止 SQL 注入,提高系统安全性。 看一下具体的例子 #{} ${} 两个都是查询语句,但是可以看出两个的sql语句明显不同,显然第一种传参的方式更加安全,第二种可能会造成sql语句在拼接的情况。