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>