Parameter 'username' not found. Available parameters are [0, 1, param1, para

本文介绍了解决MyBatis在使用多个参数时遇到的问题,详细解释了如何通过正确标注参数名或使用参数序号的方法来避免参数找不到的错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

mybatis 出错了

好吧, 参数找不到????脑中只有黑人问号, 参数名检查检查几遍了, log出来也没出错啊, 找不到喔.....

错误示范

后台Java代码 :

mapper层的接口 :

List<UserAccount> getUserAccountByEmail(int username, String email);

mapper.xml 映射中的代码 :

<!--根据username,email获取UserAccount-->
  <select id = "getUserAccountByEmail" resultMap = "BaseResultMap">
  SELECT * FROM user_account WHERE ua_username = #{username} AND ua_email = #{email}
  </select>


然后就... :

Parameter 'username' not found. Available parameters are [0, 1, param1, para


找了一会, 原来是, 当mapper层的接口中超过一个参数是以下两种写法才可以被mybatis识别参数 

第一种 (改mapper层的接口代码):

List<UserAccount> getUserAccountByEmail(@Param("username")int username, @Param("email")String email);

在参数前面加上@Param("xxx") xxx就是mapper.xml中指定的参数名

第二种 (该mapper.xml中的代码)

 <select id = "getUserAccountByEmail" resultMap = "BaseResultMap">
   SELECT * FROM user_account WHERE ua_username = #{0} AND ua_email = #{1}
  </select>

在参数指定的名字出替换成接口中参数的序号(从0开始排)

希望可以帮到你, mybatis的成就之路


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值