mybatis.xml使用map传参导致报错找不到参数

  • Post author:
  • Post category:其他




@1


,需求描述

作者是想实现多条件使用mybatis.xml写sql的方式实现数据查询,由于是多条件,那么就涉及到了多个参数,多参数则可以有2个方式去实现。

#1,使用map封装这些参数,并将map作为对象参数传递到mybatis.xml中,再从map里面逐一取到用到的查询条件

#2,使用实体类对象封装这些参数,并将实体类作为对象参数传递到mybatis.xml中,再从实体类里面逐一取到用到的查询条件

这里作者用到的是map方式传递参数



@2


,源代码实例



dao


层代码:





xml


层代码:






@3


,错误展示







@4


,思路分析

根据上述报错信息,以及对代码的分析,首先报错最直观的反应就是username找不到,那么第一反应就是参数没有获取到,

通过分析总结有几下点进行总结:

#1,select 查询语句没有添加


parameterType




=”map”

#2,mapper类传递参数没有添加@Param注解没有添加,若是没有注解,那么mybatis.xml接收参数就无法识别





@5


,解决方案


经过上述2个方案的完善发现仍然取不到参数,那么问题就出现在sql语句中取参的语法了

正确的取参方式应该是:

综上问题得到解决,map.username是从map里面取出键为username的值,jdbcType值的是map集合里的这个参数的数据类型,比如VARCHAR,

INTEGER,DATE等等。


总结:应对复杂多参数连表查询的时候通常用到


map


或者实体类封装形式传参,那么在使用


map


传参的时候一定要记住参数的名字保持一致,


取参的语法要正确使用!!!

分享纯属个人爱好,不喜勿喷,欢迎大家点赞评论!你们的支持就是我出作品的最大努力,相信对新入门的菜鸟程序员能有帮助!!!



版权声明:本文为jlzm5201314原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。