MybatisPlus绑定异常( org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): )

使用mybatis-plus出现的问题:

Exception in thread "main" org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): mapper.mybatisPlus.TestMybatisPlus.selectList
	at org.apache.ibatis.binding.MapperMethod$SqlCommand.<init>(MapperMethod.java:227)
	at org.apache.ibatis.binding.MapperMethod.<init>(MapperMethod.java:49)
	at org.apache.ibatis.binding.MapperProxy.cachedMapperMethod(MapperProxy.java:65)
	at org.apache.ibatis.binding.MapperProxy.invoke(MapperProxy.java:58)
	at com.sun.proxy.$Proxy21.selectList(Unknown Source)
	at serve.Demo.testService(Demo.java:38)
	at Test.main(Test.java:18)

解决:
1.检查是不是引入 jar 冲突
2.检查 Mapper.java 的 扫描路径
xml文件方式:

<!-- 扫描所有的mapper接口的实现,让这些mapper能够自动注入;base-package:指定mapper接口的包名 -->
    <mybatis-spring:scan base-package="mapper" />

注解方式一:在 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;
}

当然只要能扫描到,你也可以使用其它方式,如:@Mapper

3.检查是否指定了主键。如未指定,则会导致 selectById 相关 ID 无法操作,需注解 @TableId 注解表 ID 主键。当然 @TableId 注解可以没有!但是你的主键必须叫 id(忽略大小写)
4.SqlSessionFactory不要使用原生的,请使用MybatisSqlSessionFactory(这个就是我犯得错,之前测试 mybatis 的时候忘记 切换回来了)
下面两个要弄清除,不要弄混了

  <!-- 创建SqlSessionFactory 对象 -->
  <!--  <bean id="sqlSessionFactoryBean" class="org.mybatis.spring.SqlSessionFactoryBean">  <!--这个是Mybatis -->-->
    <bean id="sqlSessionFactoryBean" class="com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource" />
<!--         指定configLocation指定全局配置文件的位置 -->
        <property name="configLocation" value="classpath:xml/mybatis/mybatis-config.xml" />
        <!-- mapperLocations:指定mapper文件的位置 -->
        <property name="mapperLocations" value="classpath:mapper/*.xml"></property>
    </bean>

5.检查是否自定义了 SqlInjector,是否复写了getMethodList()方法,该方法里是否注入了你需要的方法(可参考DefaultSqlInjector)

官方文档地址

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值