MyBatis Plus Parameter 'uuid' not found. Available parameters are [ew, param1]

通过使用Mybatis Plus 提供的 Remove 方法时出现以下错误信息,类似如下代码

public void temp() {
    User user = new User();
    user.setUsername("abc");
    user.set...
    this.userManager.remove(Wrappers.update(user));
}

错误信息如下:

org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.binding.BindingException: Parameter 'uuid' not found. Available parameters are [ew, param1]
 at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:96)
 at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:441)
 at com.sun.proxy.$Proxy160.delete(Unknown Source)
 at org.mybatis.spring.SqlSessionTemplate.delete(SqlSessionTemplate.java:304)
 at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:70)
 at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:96)
 at com.sun.proxy.$Proxy174.delete(Unknown Source)
 at com.baomidou.mybatisplus.extension.service.IService.remove(IService.java:123)
 at com.baomidou.mybatisplus.extension.service.IService$$FastClassBySpringCGLIB$$f8525d18.invoke(<generated>)
 at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)
 at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:688)

原因:

Mybatis的Mapper文件是根据类名加方法名来唯一区分的,我们在自己的Mapper.xml文件中定义了跟Mybatis-Plus相同的方法名会覆盖Mybatis-Plus的方法,所以出现了问题。

第一种可能

例如本地Mapper.xml重写了Remove Update方法出现问题

第二种可能(我本次踩的坑)

因为是系统框架过度,原用的TkMapper没有去除,导致被TkMapper覆盖了一些Mapper方法

更新日期:
作者: qwding, 丁乾文