1. sql语句如下: 

      SELECT * FROM tb_crm_user WHERE
id = #{userId, jdbcType=INTEGER} AND
user_name = #{userName, jdbcType=VARCHAR}

2. 接口如下:

TbCrmUser queryTbCrmUser(int userId, String userName);

3. 调用接口方式如下:

int userId = 1000059081;
String userName = "积极";
TbCrmUser user1 = tb.queryTbCrmUser(userId, userName); 

4. 结果如下:

5. 错误原因:

这个错误表示,xml可用的参数只有【0, 1, param1, param2】四个,没有userId! 这就奇了个怪,本宝明明给了参数userId,为什么识别不了?而且我只有一个参数的时候,这样明明没有错呀!!!

原来是【0, 1, param1, param2】是MyBatis根据参数位置自定义的名字,如果只有一个参数,那就只有一个位置,当然没有歧义了。可是如果有多个参数,就需要指定哪个参数在哪个位置!

6. 修改方式1:

最简单的一个方式就是修改sql语句,指定位置,用0,1 或者param1, param2都可以:

SELECT * FROM tb_crm_user WHERE
id = #{0, jdbcType=INTEGER} AND
user_name = #{1, jdbcType=VARCHAR}
但是不建议这样做,因为如果参数很多,效果则不理想; 修改方式2:
给接口添加@Param注解,指明参数的对应关系,原因是给参数配置了@Param注解后,MyBatis就会自动将参数封装成Map类型,@Param注解值会作为Map中的key,因此在xml中的sql语句就可以通过配置的注解值来使用参数
TbCrmUser queryTbCrmUser(@Param("userId") int userId,
@Param("userName") String userName);
修改方式3:
当参数很多时:我们还可以采用如下方式解决:
首先,修改接口参数格式:
TbCrmUser queryTbCrmUser(Map<String, Object> map);

其次,在调用接口的前面自己创建一个map
int userId = 1000059081;
String userName = "积极";
Map<String, Object> map = new HashMap<>();
map.put("userId", userId);
map.put("userName", userName);
TbCrmUser user1 = tb.queryTbCrmUser(map);
这样做的本质与第二种方式本质一致!

												

MyBatis多个接口参数报错:Available parameters are [0, 1, param1, param2], 及解决方法的更多相关文章

  1. Spring Boot中报错org.apache.ibatis.binding.BindingException: Parameter 'XXXX' not found. Available parameters are [0, 1, param1, param2]的解决办法

    我这里的报错信息显示: org.apache.ibatis.binding.BindingException: Parameter 'reqUsername' not found. Available ...

  2. Picard报错“MAPQ should be 0 for unmapped read”的解决方法

    picard对bwa生成的sam文件进行reorder时,报错如下: Getting Help Exception in thread "main" htsjdk.samtools ...

  3. flask+sqlite3+echarts2+ajax数据可视化报错:UnicodeDecodeError: 'utf8' codec can't decode byte解决方法

    flask+sqlite3+echarts2+ajax数据可视化报错: UnicodeDecodeError: 'utf8' codec can't decode byte 解决方法: 将 py文件和 ...

  4. 【pycharm】pycharm上安装tensorflow,报错:AttributeError: module 'pip' has no attribute 'main' 解决方法

    pycharm上安装tensorflow,报错:AttributeError: module 'pip' has no attribute 'main' 解决方法 解决方法: 在pycharm的安装目 ...

  5. 使用IDEA操作Hbase API 报错:org.apache.hadoop.hbase.client.RetriesExhaustedException的解决方法:

     使用IDEA操作Hbase API 报错:org.apache.hadoop.hbase.client.RetriesExhaustedException的解决方法: 1.错误详情: Excepti ...

  6. Python报错UnicodeDecodeError: ascii codec can t decode byte 0xe0 ...解决方法

    用命令(python setup.py install)安装webpy时候总是报错 在网上搜索到的解决方法如下: 1. 这是Python 2 mimetypes的bug 2. 需要将Python2.7 ...

  7. 启动tomcat时,报错:IOException while loading persisted sessions: java.io.EOFException解决方法

    报错原因:加载持久化session错误,tomcat加载时读取的文件是是*.ser,session序列化文件,文件的位置是tomcat\work\Catalina\localhost,找到sessio ...

  8. mybatis参数错误 Parameter '×××' not found. Available parameters are [0, 1, param1, param2]

    报错的代码 @Update("update staff_info set ApplyState = #{applyState} where Id = #{userId}") int ...

  9. 编译lua5.3.2报错提示libreadline.so存在未定义的引用解决方法

    从官网上下载5.3.2的源码后,make linux进行编译,提示报错: gcc -std=gnu99 -o lua lua.o liblua.a -lm -Wl,-E -ldl -lreadline ...

随机推荐

  1. POJA Star not a Tree?(模拟退火)

    题意 题目链接 给出$n$个点,求出一个点使得到各个点的距离之和最小,距离为欧几里得距离 Sol 模拟退火真是玄学,我退了一上午,最后把exp函数去了就A了. 后来改了改,发现是大小符号的问题.. 但 ...

  2. 【TensorFlow入门完全指南】模型篇·最近邻模型

    最近邻模型,更为常见的是k-最近邻模型,是一种常见的机器学习模型,原理如下: KNN算法的前提是存在一个样本的数据集,每一个样本都有自己的标签,表明自己的类型.现在有一个新的未知的数据,需要判断它的类 ...

  3. python基础教程总结15——1.即时标记

    1. 测试文档: # test_input.txt Welcome to World Wide Spam. Inc. These are the corporate web pages of *Wor ...

  4. 从PEP-8学习Python编码风格

    (搬运自我在SegmentFault的博客) 关于空行 类与顶级函数(top-level function)的定义之间应当空两行. 类中的方法之间应当空一行. 方法中的逻辑部分之间可以空一行. 关于原 ...

  5. uva806 Spatial Structures 空间结构 (黑白图像的四分树表示)

    input 8 00000000 00000000 00001111 00001111 00011111 00111111 00111100 00111000 -8 9 14 17 22 23 44 ...

  6. Python基础篇 -- 集合

    set集合 set 中的元素是不重复的,无序的 里面的元素必须是可hash的,(int str tuple bool) set 就是dict 类型的数据,但是不保存value 只保存 key set集 ...

  7. oracle系統表、數據字典介紹與日常問題診斷

    oracle系統表.數據字典介紹與日常問題診斷 數據字典是由唯讀的table和view組成的,產生於$oracle_home\rdbms\admin\catalog.sql.裡面儲存Oracle資料庫 ...

  8. MySQL创建数据库,用户,赋予权限

    CREATE DATABASE 'voyager'; CREATE DATABASE `voyager`; CREATE USER 'dog'@'localhost' IDENTIFIED BY '1 ...

  9. linux关于进程、内存和cpu情况

    1.load average: 2.03, 1.76, 1.80 1分钟.5分钟.15分钟平均负载 2.%Cpu(s):100.0 us, 0.0 sy, 0.0 ni, 0.0 id, 0.0 wa ...

  10. paper:synthesizable finit state machine design techniques using the new systemverilog 3.0 enhancements之fsm1各种style的timing/area比较

    整体说,一般还是用2段式,再加上output encodecd/default -X技巧.