首先简单说下两者有什么区别:
- 1、${ } 拼接符 ,即 sql 拼接,变量替换后,${ } 对应的变量不会加上单引号 '
- 2、#{ } 占位符,即sql 预编译,变量替换后,#{ } 变量自动加上单引号 ' '
举例说明:现查询表user中姓名为“张三”的信息
select * from ${user} where 1=1 and user_name='张三';
mybatis编译后的效果为:
select * from user where 1=1 and user_name='张三';
select * from user where 1=1 and user_name=#{userName,JdbcType=VARCHAR};
mybatis编译后的效果为:
select * from user where 1=1 and user_name='张三';