在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标签中的原因?。。
原因未知,有待解决