#{}和${}的区别是什么?

MyBatis#{}${}浏览:2144收藏:1
答案:
#{}的使用场景:在表的sql映射文件中如下使用:
<mapper namespace="com.mybatis.test2.userMapper">
<select id="insertUser" parameterType="_User">
INSERT INTO users(name,age) values(#{name},#{age})
</select>
</mapper>

#{}是sql的参数占位符,Mybatis会将sql中的#{}替换为?号,在sql执行前会使用PreparedStatement的参数设置方法,按序给sql的?号占位符设置参数值。
${}的使用场景:先在配置文件中定义好变量,再在conf.xml中如下使用:
<environments default="development">
<environment id="development">
<transactionManager type="JDBC" />
<dataSource type="POOLED">
<property name="driver" value="${jdbcDriver}" />
<property name="url" value="${jdbcUrl}" />
<property name="username" value="${username}" />
<property name="password" value="${password}" />
</dataSource>
</environment>
</environments>


${}是Properties文件中的变量占位符,它可以用于标签属性值和sql内部,属于静态文本替换,比如${jdcDriver}会被静态替换为com.mysql.jdbc.Driver。