https://blog.csdn.net/hanliuxi4265/article/details/87971982
#{}是预编译处理,${}是字符串替换。
Mybatis在处理#{}时,会将sql中的#{}替换为?号,调用PreparedStatement的set方法来赋值;
Mybatis在处理${}时,就是把${}替换成变量的值。
使用#{}可以有效的防止SQL注入,提高系统安全性。
String和StringBulider的区别
String类中成员变量是final修饰的字符数组,创建后长度确定,拼接的时候,需要重新创建新的对象的方法,效率低。
StringBuilder类中成员变量是没有修饰的字符数组,当我们调用append();方法进行拼接的时候,调用父类的方法对数组扩容,本地方法实现字符串的拼接