关于mybatis的参数传入区别${column}、#{column}

有时候我们使用mybatis的Mapper.xml对数据库进行操作的时候,会出现这种情况:

先上数据库:

 

 

 


 

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

 

 

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

 

先说解决方案,文末再总结原因:

xml中的数据库语句换成这样:

 

 

 查询结果:

 

 

 

成功!!!!

 

 


 

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

 

 

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

 

 

 解决方案:

 

 

 运行结果:

 

 

 成功!!!!

 


个人总结:

查阅了Mybatis文档后发现:

在Mybatis中,${column} 会被直接替换,而 #{value} 会使用 ? 预处理。

 #{value}预处理:!!!----->对于使用#{}形式导入的参数,会在预处理的时候加上''单引号,

所以导致在执行数据库的sql语句出现错误结果。

我们在②问题那会出现到数据库中查询变成这样的情况,因为参数名预处理会变成这样。

所以我们看到的结果会有一个Age的查询结果。

 

 

 

 

 


 文档中的总结:

 

posted on 2021-06-27 14:21  汤姆猫8  阅读(379)  评论(0)    收藏  举报