Mybatis配置文件中#{ }和${ }的区别

Posted 在谷歌上百度

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mybatis配置文件中#{ }和${ }的区别相关的知识,希望对你有一定的参考价值。

#{ }和${ }都可以从map中取到相对应的值,

但是

#{ }采取的是预编译的方式(PreparedStatement)来执行sql语句,有效防止了sql注入问题

select * from book where id=? and name = ?

而${ }采用的是拼接sql的方式

select * from book where id = 2 and name =‘zhangsan‘

这样会存在安全问题


 

大多数情况下我们使用#{ }的方式来取值,

但是在遇到原生JDBC不能使用占位符的情况下

比如分表操作,排序操作等等

select * from 表名;

这个表名不可以使用占位符,取值的话可以使用${table_name }的方式来获取相应的表名 

以上是关于Mybatis配置文件中#{ }和${ }的区别的主要内容,如果未能解决你的问题,请参考以下文章

Mybatis配置文件中#{ }和${ }的区别

Mybatis入门案例之增删改查

Mybatis中parameterType和parameterMap的区别

mybatis和Dao映射的配置文件xml,中什么时候需要用resultType .什么时候用resultMap,及resultType和resultMap的区别

Mybatis中parameterType和parameterMap的区别

Mybatis-Plus:配置(基本配置进阶配置DB策略配置)classpath*: 和classpath:区别