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

本文介绍了MyBatis中#{}和${}的区别。#{}用于声明变量,传参时会被转义为字符串,防止SQL注入;而${}常用于动态SQL,如order by和group by等,但可能导致SQL注入问题。建议尽量使用#{}以提高安全性。文章还提及了在mapper、dao和controller层的实际应用,并提供了不同业务场景下排序的示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.mybatis中的#{}

一般地,#{}在mybatis中表示申明一个变量;使用#{}传参时,sql语句解析是会加上"",比如  select * from user where name = #{name} ,传入的name为zhangxing,那么最后

打印出来的sql为:

select * from user where name = ‘zhangxing’,就是会当成字符串来解析,这样相比于${}的好处是比较明显的:#{}传参能防止sql注入,如果传入的参数为 单引号',那么使用

${},这种方式是会报错的;

2..mybatis中的${}

一般地,在排序(oreder by),分组(group by)或者插入固定表及字段时,可以考虑使用${} 

select * from user order by ${param}

${param} :当入参是age时, =>select * from user order by age,这时非得用${},如果用#{},

select * from user order by #{param}

#{param}:当入参是age时,=>select * from user order by 'age'

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

老张家的独苗

可以吃鸡腿????么!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值