区分 #{} 和 ${}的不同应用场景

1)#{} 会生成预编译SQL,会正确的处理数据的类型,而 KaTeX parse error: Expected 'EOF', got '#' at position 70: …'S123456'; 如果使用#̲{} 那么生成的SQL为: s…{}
那么生成的SQL为:select * from student where xCode = S123456

${}出来的是不带引号的,#{}会有引号的,

如果xCode的数据类型为varchar,那么使用${}就会报错。

2)${}一般用在order by, limit, group by等场所。
假设我们使用#{} 来指定order by字段,比如
select * from student order by #{xCode},
那么产生的SQL为
select * from student order by ?, 替换值后为
select * from student order by ‘xCode’
Mybatis对xCode加了引号导致排序失败

order by:
一般使用#,防止注入,但在排序问题上,必须使用$进行注入。
例:order by ${sortColumn} KaTeX parse error: Expected 'EOF', got '#' at position 15: {sortOrder} 因为#̲是按string类型拼接,就成…则为:order by cloumn desc。

limit:
例: limit #{index}, #{rows}

like 使用# 的 方 式 : 例 : a n d s s . s u r v e y n a m e l i k e " 例 : a n d p r o d n a m e l i k e ′ 的方式: 例: and ss.survey_name like "%"#{surveyName}"%" 例: and prod_name like '% andss.surveynamelike"andprodnamelike{prodName}%’

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值