先上解决方案:
我的现象是:
1.其他类的mapper都是好用的 编译不报错
2.mybatisplus自带的 updateById和selectById报这个错误 自己手写mapper.xml中的方法无错误
3.深入源码 发现mybatis加载mapper后的集合中 没有缓存我这个mapper的updateById和selectById 其它键值对是有的
实体中主键没有配置
@TableId(value = "transport_car_id",type = IdType.AUTO)
堆栈信息如下:
org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.xxxx.mapper.mysql.XXXXMapper.updateById
at org.apache.ibatis.binding.MapperMethod$SqlCommand.<init>(MapperMethod.java:225)
at org.apache.ibatis.binding.MapperMethod.<init>(MapperMethod.java:48)
at org.apache.ibatis.binding.MapperProxy.cachedMapperMethod(MapperProxy.java:65)
at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:58)
at com.sun.proxy.$Proxy216.updateById(Unknown Source)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:343)
at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:198)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163)
at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:139)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:212)
at com.sun.proxy.$Proxy217.updateById(Unknown Source)
网上搜了好多文章 都是接口Mapper和Mapper.xml 未对应 命名空间写的不对,类加载配置文件路径问题 谁知只是个主键问题 特此记录一下2个多小时的努力,原来之前的代码一直有问题,只有这个mapper 被注解为
@Repository
哈哈,希望现象和我一样的小伙伴能看到~ 也希望之后的plus版本能给个友好的提示
网友评论