mybatis plus报Invalid bound statement (not found):解决

出现Invalid bound statement (not found) 异常

org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.yk.yearmeet.modular.service.UserService.list

	at com.baomidou.mybatisplus.core.override.PageMapperMethod$SqlCommand.<init>(PageMapperMethod.java:261)
	at com.baomidou.mybatisplus.core.override.PageMapperMethod.<init>(PageMapperMethod.java:58)
	at com.baomidou.mybatisplus.core.override.PageMapperProxy.cachedMapperMethod(PageMapperProxy.java:70)
	at com.baomidou.mybatisplus.core.override.PageMapperProxy.invoke(PageMapperProxy.java:63)
	at com.sun.proxy.$Proxy72.list(Unknown Source)
	at com.baomidou.mybatisplus.extension.service.IService.list(IService.java:279)
	at java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:627)
	at com.baomidou.mybatisplus.core.override.PageMapperProxy.invokeDefaultMethod(PageMapperProxy.java:89)
	at com.baomidou.mybatisplus.core.override.PageMapperProxy.invoke(PageMapperProxy.java:58)
	at com.sun.proxy.$Proxy72.list(Unknown Source)
	at com.yk.yearmeet.oss.OssTest.serviceTest(OssTest.java:35)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)

上述日志详情。
解决方案:
我是因为,在启动类和配置类都进行类MapperScaner的声明
在这里插入图片描述
在这里插入图片描述
保留一个配置就可以了,这俩配置冲突。
还有以下几种方向进行分析问题

  1. 检查是不是引入 jar 冲突
  2. 检查 Mapper.java 的扫描路径
    方法一:在 Configuration 类上使用注解 MapperScan
@Configuration
@MapperScan("com.yourpackage.*.mapper")
public class YourConfigClass{
  ...
}

方法二:在Configuration类里面,配置MapperScannerConfigurer

@Bean
public MapperScannerConfigurer mapperScannerConfigurer(){
    MapperScannerConfigurer scannerConfigurer = new MapperScannerConfigurer();
    //可以通过环境变量获取你的mapper路径,这样mapper扫描可以通过配置文件配置了
    scannerConfigurer.setBasePackage("com.yourpackage.*.mapper");
    return scannerConfigurer;
}
  1. 检查命名空间是否正常? 检查包扫描路径typeAliasesPackage是否正常?如果扫描不到,MP 无法进行预注入
  2. 检查是否指定了主键?如未指定,则会导致 selectById 相关 ID 无法操作,请用注解 @TableId 注解表 ID 主键。当然 @TableId 注解可以没有!但是你的主键必须叫 id(忽略大小写)
  3. SqlSessionFactory不要使用原生的,请使用MybatisSqlSessionFactory
  • 70
    点赞
  • 106
    收藏
    觉得还不错? 一键收藏
  • 62
    评论
### 回答1: Mybatis-plus的invalid bound statement (not found)错误通常是因为在mapper XML文件中,没有定义对应的SQL语句导致的。这种错误通常会在运行时抛出,提示找不到指定的SQL语句。解决这种错误的方法是在mapper XML文件中,定义相应的SQL语句,并使用正确的方法名进行引用。 首先,我们需要检查mapper XML文件中的方法名和Java接口中的方法名是否一致。如果不一致,需要修改Java接口中的方法名,以和mapper XML文件中的方法名保持一致。 如果方法名一致,我们需要检查mapper XML文件中是否存在对应的SQL语句。如果不存在,需要手动添加SQL语句,并在Java接口中引用该SQL语句的方法名。 最后,我们可以使用Mybatis-plus的日志输出功能来定位该错误。在控制台中查看日志,可以看到具体的错误信息,从而更快地找到解决方法。 总之,要解决mybatis-plus的invalid bound statement (not found)错误,我们需要检查方法名是否一致并在mapper XML文件中定义相应的SQL语句。另外,使用日志输出功能可以更快地定位错误并解决问题。 ### 回答2: Mybatis-plus的无效绑定语句(找不到)是指在Mybatis-plus中的mapper.xml文件中,找不到所定义的绑定语句。这种错误通常会在应用程序在执行SQL语句时发生。 这种错误通常是由于mapper.xml文件中的SQL语句拼写错误、缺失或者是没有正确的定义,以及在映射接口中指定的命名空间与mapper.xml文件中所定义的不相符等原因。 要解决这个问题,需要检查mapper.xml文件中的SQL语句是否正确,如果存在拼写错误,需要进行修改;同时还需要确认命名空间是否正确,并且确保映射接口中的方法名与mapper.xml文件中所定义的绑定语句名相同。 如果上述步骤都没有解决问题,可以尝试重新生成mapper.xml文件和映射接口,以确保代码中的所有文件都是正确的,并且都具有一致性。此外,还可以尝试查看应用程序日志文件,以了解是否有其他的错误信息。 ### 回答3: 这个错误通常是由于MyBatis-Plus未能找到指定的SQL语句而引起的。 可能是以下任何一种原因: 1. 没有正确的映射器文件或映射器接口。请检查映射器文件和接口是否在正确的位置,并且是否正确设置了命名空间和方法名。 2. SQL语句拼写错误或命名不一致。请确保查询语句或参数与映射器文件或接口文件中的正确匹配,并且SQL语句的命名和定义相同。 3. 数据库连接出现问题。检查数据库连接设置并确保数据库能够正确连接。可以使用ping命令或数据库客户端测试连接。 4. MyBatis-Plus版本与其他依赖项不匹配。请确保MyBatis-Plus与其他依赖项的版本兼容,并且没有版本冲突。 要解决这个问题,可以尝试使用MyBatis-Plus提供的日志工具来调试,并检查以上可能的原因。如果无法解决,可以分享到官方社区或GitHub上,以寻求帮助和解决方案。
评论 62
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值