MyBatis中 #{} 和 ${} 的区别

来源:互联网 发布:js array pop 编辑:程序博客网 时间:2024/06/06 01:11

#{}:以预编译的形式,将参数设置到 SQL语句中。相当于PreparedStatement。可以防止 SQL 注入。

SELECT * FROM table WHERE id = #{id}

相当于:

SELECT * FROM table WHERE id = ?

然后 preparedStatement.setInt(1,id);



${}:取出值,直接拼装在 SQL 语句中,会有安全问题。

SELECT * FROM table WHERE id = ${id}


相当于:

SELECT * FROM table WHERE id = 1
${id}取到的值直接拼接在 SQL 语句中

大多数情况下,使用#{}


原生 JDBC 不支持占位符的地方可以使用 ${} 进行取值。


分表,按照年份表拆分:

SELECT * FROM ${year}_salary WHERE xxxxx


排序:

SELECT * FROM table WHERE xxxxx order by ${field_name} ${order}

field_name:排序的字段名根据

order:ASC(升序)/DESC(降序)


表名:

SELECT ${tableName} WHERE xxxxx


原创粉丝点击