关于mybatis的参数传入区别${column}、#{column}
有时候我们使用mybatis的Mapper.xml对数据库进行操作的时候,会出现这种情况:
先上数据库:

①:我们想传入两个参数,动态更新查询条件。

但是运行的时候发现,虽然数据库中有Name=1的数据,但是缺查不到????

先说解决方案,文末再总结原因:
xml中的数据库语句换成这样:

查询结果:

成功!!!!
②:我们想查询自定义列的信息。

奇了怪了????怎么我让你去查Name=1的Age列,你把自己Age作为查询结果给我????

解决方案:

运行结果:

成功!!!!
个人总结:
查阅了Mybatis文档后发现:
在Mybatis中,${column} 会被直接替换,而 #{value} 会使用 ? 预处理。
#{value}预处理:!!!----->对于使用#{}形式导入的参数,会在预处理的时候加上''单引号,
所以导致在执行数据库的sql语句出现错误结果。

我们在②问题那会出现到数据库中查询变成这样的情况,因为参数名预处理会变成这样。
所以我们看到的结果会有一个Age的查询结果。

文档中的总结:

浙公网安备 33010602011771号