MyBatis 中#{} 和 ${}符号区别

4 篇文章 0 订阅

MyBatis 中#{} 和 ${}符号异同

相同点:

都能取到变量的值。

不同点:

#可以实现预编译,会先把#{变量}编译成?,在执行时再取值,可以防止sql注入。

$是直接进行字符串替换。

各自特点:

#{} 占位符,是经过预编译的,编译好 SQL 语句再取值,

#方式能够防止 sql 注入 #{}

#{}:select * from t_user where uid=#{uid}

${} 拼接符,会传入参数字符串,取值以后再去编译 SQL 语句,

$方式无法防止 Sql 注入 ${}

${}:select * from t_user where uid= '1'

注意:MyBatis 排序时使用 order by 动态参数时需要注意

实例:

  在Maven项目下,利用Mybatis时,如果向数据库中的数据进行增删改查,对应的sql语句可以使用如图两种方式(进行mybatis全局配置后)

当用#时,控制台会显示为如图 

显示的value为(?,?)

在使用${}时,显示为如图

你的sql语句为:

 其中你的${}要用单引号包着

控制台显示为 

其中的 value为('zhangsan','root’)

前面为你的account的value,后面的root为数据库的密码

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值