Mybatis的#{}和${}两种占位符区别
mybatis处理#{} ,使用jdbc对象是 PrepareStatment对象
特点:
- 使用的PrepareStatement对象,执行sql语句,效率高。
- 使用的PrepareStatement对象,能避免sql语句注入, sql语句执行更安全。
- #{} 常常作为 列值使用的, 位于等号的右侧, #{}位置的值和数据类型有关的。
${}占位符
- 使用Statement对象,执行sql语句,效率低
- $ {}占位符的值,使用的字符串连接方式(字符串连接,把sql语句的其他内容和${}中的内容使用+ 连接的方式连接在一起), 有sql注入的风险。 有代码安全的问题
- ${} 数据是原样使用的, 不会区分数据类型。
- ${} 常用作 表名或者列名, 在能保证数据安全的情况下使用 ${}