spring boot集成mybatis-plus 报Invalid bound statement (not found):解决方案

如图: 出现Invalid bound statement (not found) 异常

org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.yf.groupon.mapper.GroupRuleMapper.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 


解决方案一: MapperScaner冲突和扫描路径

在启动类和配置类都进行类MapperScaner的声明
在这里插入图片描述
在这里插入图片描述
保留一个就可以了,配置俩冲突。

同时检查下括号里的扫描路径

@Configuration
@MapperScan("com.yf.groupon.mapper*")
public class MybatisConfigClass{
  ...
}

解决方案二:检查命名空间是否正常
在这里插入图片描述


解决方案三:在pom.xml文件build添加resources资源列表。

	<build>
        <resources>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                	<include>**/*.properties</include>
                    <include>**/*.xml</include>
                    <include>**/*.yml</include>
                    <include>**/*.yaml</include>
                </includes>
                <filtering>true</filtering>
            </resource>
            <resource>
                <directory>src/main/resources</directory>
                <filtering>true</filtering>
                <includes>
                    <include>**/*.properties</include>
                    <include>**/*.yml</include>
                    <include>**/*.yaml</include>
                    <include>**/*.xml</include>
                </includes>
            </resource>
         </resources>
    </build>

解决方案四:检查配置文件中包扫描路径typeAliasesPackage是否正常?如果扫描不到,MP 无法进行预注入

在这里插入图片描述


解决方案五:导入依赖

请将mybatis-plus改成mybatis,mybatis,mybtis,重要的说三遍,
必要的架包如下

	<dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.0.1</version>
	</dependency>
	<dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus</artifactId>
            <version>3.3.1</version>
	</dependency>
	<dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-autoconfigure</artifactId>
            <version>2.0.1</version>
	</dependency>

注意第一个是mybatis-spring-boot-start ,不是mybatis-plus-boot-starter
还要在mybatis配置文件里声明MybatisSqlSessionFactoryBean,

SqlSessionFactory不要使用原生的,请使用MybatisSqlSessionFactoryBean,
并设置扫描路径(覆盖配置文件中的mybatis-plus.mapper-locations)

    @Bean
    @Primary
    public SqlSessionFactory userSqlSessionFactory(@Qualifier("tempDataSource") DataSource dataSource)
            throws Exception {
        MybatisSqlSessionFactoryBean bean = new MybatisSqlSessionFactoryBean();
        bean.setDataSource(dataSource);
        bean.setMapperLocations(new PathMatchingResourcePatternResolver()
                .getResources("classpath:mapper/**/*.xml"));
        return bean.getObject();
    }


解决方案六:还是导入依赖问题

        <!-- mybatis -->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.3.1</version>
        </dependency>
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus</artifactId>
            <version>3.3.1</version>
        </dependency>
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-autoconfigure</artifactId>
            <version>2.0.1</version>
        </dependency>

注意这里和方案五不同的是:没有mybatis-spring-boot-start ,而是mybatis-plus-boot-starter

因为该源码里都帮你配好了,有默认扫描路径,并声明使用MybatisSqlSessionFactoryBean
在这里插入图片描述

在这里插入图片描述
如果你的xml文件也是在resources下的mapper包里,那在配置文件中无需设置,注释掉,启动时会自动读取"classpath*:/mapper/**/*.xml" 下的xml文件
在这里插入图片描述
在这里插入图片描述
可如果你的xml文件不是在resources下的mapper包里,那你就参考方案四,自己setMapperLocations


最后总结下就是:
方案一二三必须检查,
五和六根据xml文件所在路径取其一
选了五或六,四可注释忽略

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值