mybatis中碰到的问题:接收参数时,#{ } 接收不到而 ${ } 却能正确接收

在mybatis中写了一个简单的sql并使用了注解的方式进行传值,代码如下:

mapper.java 中

void update(@Param("usercode") String usercode);

mapper.xml 文件中  

update reward set 1=1 where usercode=#{usercode}

出现的问题:在sql获得传入的参数时,发现在控制台打印出的log日志中,sql语句并未正确获得由 #{usercode} 传递的参数

日志如下:

但是使用${ usercode} 方式传递参数,能正确获得。代码和日志如下:

mapper.xml 文件中

update reward set 1=1 where usercode=${usercode}

日志

疑问:

在mapper.java使用注解时 ${ } 比#{ } 拥有更大的接收范围吗?可在开发中,使用注解也都是用#{ } 接收的,除非碰到需要特殊处理的参数才用${ }接收( #{ } 会预编译  )。还是因为#{ } 会提前预编译的原因导致这个问题?,还是因为这条语句写在了update标签中的原因?。。

原因未知,有待解决

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值