【已解决】Feign报错 feign.FeignException$InternalServerError: [500] during [PUT] to....

文章讲述了在使用Seata和SpringCloud项目中,通过Feign调用Controller时遇到的MyBatis报null错误,原因在于AccountMapper接口方法缺少@Param注解。作者提供了正确添加注解的方法以及不使用注解时修改编译参数的解决方案。
摘要由CSDN通过智能技术生成

1. 问题描述

最近在写整合seata写springcloud项目时候通过feign调用controller中的接口报如下错误

上面的错误是在做为TM的订单处捕获的,下面的错误是在订单处调用的账户微服务

2. 解决方法

可以看到mybatis报了null🙃,那肯定是有什么东西在mybatis这没找到,那我们不妨就从账户微服务处的mapper文件和mapper.xml往上查查,要不就是方法没有定义,要不就是xml里面的namespace找不到,或者是参数找不到等等。

public interface AccountMapper extends Mapper<Account> {
    /*
    * 更新账户钱数
    * */
    void updateAccountMoney(Long userId, Long money);
}

问题所在就在这里,由于这两个参数xml里面找不到所以会返回null(太久没写忘记要加@Param注解)

注意:当一个方法的参数大于一个的时候,必须用 @Param 注解进行标明,不然会报错

3. 正确写法

public interface AccountMapper extends Mapper<Account> {
    /*
    * 更新账户钱数
    * */
    void updateAccountMoney(@Param("userId") Long userId, @Param("money") Long money);
}

或者是我就是不想加这个注解,那么可以修改配置编译参数 -parameters,在maven-compiler-plugin的configuration上添加 <parameters>true</parameters>

  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值