mybatis中占位符${}和#{}的区别

我们在书写SQL语句中,更多用的是#{}。

#{}在mybatis中,她其实最后会被解析成?,其实就是我们的?占位符。而且#{}的解析有预编译过程,会对我们的输入的参数进行类型解析,如果是String类型,我们设置参数的额时候就会自动为它加上引号,我们这样可以防止我们的SQL注入问题

,我们一般用在我们的模糊查询,比如:‘select∗fromtbookwherenamelike′因为我们的{},我们一般用在我们的模糊查询,比如:`select * from t_book where name like '%{name}%;'` 因为我们的,我们一般用在我们的模糊查询,比如:selectfromtbookwherenamelike因为我们的{}在处理阶段不会做参数的类型解析,而仅仅只是做了字符串的简单拼接,若入参的name属性为’OR ‘1’ = '1,那么会解析成select * from t_book name like '%'OR '1' = '1%',这样我们就存在了注入的风险。
因为我们的后面1 = 1恒成立,这样攻击者在不需要知道用户名和密码的情况下,也能够完成登录验证

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值