9 #{}和${}的区别
张创琦 2022.03.13
1 #{}
{}:表示一个占位符,通知 Mybatis 使用实际的参数值代替。并使用 PrepareStatement 对象执行 sql 语句, #{…}代替sql 语句的“?”。这个是Mybatis 中的首选做法,安全迅速。
<select id="queryById" parameterType="int" resultType="com.kkb.pojo.Team">
select * from team where teamId=#{id}
</select>
<!--Mybatis执行的时候是:
String sql="select * from team where teamId=?"; PreparedStatement ps = conn.prepareStatement(sql); ps.setInt(1,1001);
where teamId=? 实际就是 where teamId=#{id}
ps.setInt(1,1001) 中的1001会替换#{id}
-->
2 ${}
包含的“字符串”替换所在位置。使用 Statement或者 PreparedStatement 把 sql 语句和 ${} 的内容连接起来。一般用在替换表名, 列名,不同列排序等操作。
测试案例放在第8个文档的 test05 和 test06 中了。
test06 为使用不同列作为查询条件。