MyBatis 将 #{}编译成类似于 jdbc PreparedStatement 的参数标记,而将${} 直接编译成字符串。这对我们写出正确的MyBatis配置文件是非常有用的。
语言表达可能不是很清楚,下面看一个例子。 //这里是MyBatis配置文件里面的sql语句。<select id="generalSelect" parameterType="map"> select * from ${table} where col1 = #{criteria} </select>
//准备参数
Map<String, Object> parms = new HashMap<String, Object>(); parms.put("table", "foo"); parms.put("criteria", 37); List<Object> rows = mapper.generalSelect(parms);//调用
generalSelect(params);
//在执行过程中,MyBatis 会将定义的sql语句编译成下面的形式
select * from foo where col1 = ?