Mybatis的#{}和${}的区别(面试常问)

1、#{}是预编译处理,${}是字符串替换

2、Mybatis 在处理#{}时,会将 sql 中的#{}替换为?号,调用PreparedStatement 的 set 方法来赋值;

PreparedStatement ps = conn.prepareStatement(sql);
ps.setInt(1,id);

3、Mybatis 在处理$ {}时,就是把${}替换成变量的值。

Statement st = conn.createStatement();
ResultSet rs = st.executeQuery(sql);

4、使用#{}可以有效的防止 SQL 注入(预编译),提高系统安全性。

你可能感兴趣的:(Mybatis)