MyBatis-映射文件03-两种取值方法(# or $)

MyBatis-映射文件03-两种取值方法(# or $)

#{}:可以获取map中的值或者POJO对象属性的值
${}:可以获取map中的值或者POJO对象属性的值
区别:
#{}:是以预编译的形式设置到sql语句中;PreparedStatement,可以防止sql注入
${}:取出的值直接拼接在sql语句中;会有安全问题

示例:

sql:

select id,last_name,email,gender from tbl_employee where id = ${id} and last_name = #{lastName}

我们调用方法执行该sql,可以发现在控制台输出:

 Preparing: select id,last_name,email,gender from tbl_employee where id = 1 and last_name = ?  

可以看出使用 $ 取值是直接将值拼接到sql语句中,这样会存在sql注入的安全问题,因此大多数情况下都应该使用 # 来取值

但是,在某些情况下,比如原生sql不支持占位符的地方,例如分表查询,以部分表名为参数,要使用 $ 来取值

示例:

sql:

select id,last_name,email,gender from #{tablename}_employee where id 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值