日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

mybatis(mybatis-plus)報invalid bound statement (not found)或者找不到xml文件(各種情況)

作者:小徐敲java 更新時間: 2024-04-05 編程語言

情況1:xml文件不在resource目錄下的必須使用絕對路徑

mybatis-plus:
  # Mapper.xml 文件位置 Maven 多模塊項目的掃描路徑需以 classpath*: 開頭
  # 實現接口綁定
  mapper-locations: classpath*:com/example/clickhouse/mapper/**/xml/*Mapper.xml

情況2:查看yml文件是否添加mybatis配置(xml文件在resource目錄下)

mybatis-plus:
  # Mapper.xml 文件位置 Maven 多模塊項目的掃描路徑需以 classpath*: 開頭
  # 實現接口綁定
  mapper-locations: classpath*:mybatis/xml/*Mapper.xml

情況3:區分使用的的版本是mybatis還是mybstis-plus,yml配置也不同(xml文件在resource目錄下)

#mybatis:
mybatis-plus:
  # Mapper.xml 文件位置 Maven 多模塊項目的掃描路徑需以 classpath*: 開頭
  # 實現接口綁定
  mapper-locations: classpath*:mybatis/xml/*Mapper.xml

情況4:調用mybatis(mybatis-plus)的IService的查詢方法看是否也報這個錯誤,如果也報這個錯誤就是SqlSessionFactory手動注入了,如下

    @Bean("sqlSessionFactory")
    public SqlSessionFactory sqlSessionFactoryBean(DynamicDataSource dynamicDataSource) throws Exception {

        //MybatisSqlSessionFactoryBean sessionFactory = new MybatisSqlSessionFactoryBean();
        SqlSessionFactoryBean sessionFactory = new SqlSessionFactoryBean();
        sessionFactory.setDataSource(dynamicDataSource);
        //sessionFactory.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath*:com/example/poi/mapper/**/xml/*Mapper.xml"));
        return sessionFactory.getObject();
    }

如上的方法永遠不會調用到mybatis的bean,需要修改成如下才行,同時在yml配置的mybatis都失效了,需要在SqlSessionFactory 設置,如設置讀取*Mapper.xml的路徑

@Bean("sqlSessionFactory")
    public SqlSessionFactory sqlSessionFactoryBean(DynamicDataSource dynamicDataSource) throws Exception {
        MybatisSqlSessionFactoryBean sessionFactory = new MybatisSqlSessionFactoryBean();
        sessionFactory.setDataSource(dynamicDataSource);
        /// 創建Configuration對象
        MybatisConfiguration mybatisConfiguration = new MybatisConfiguration();
        mybatisConfiguration.setLogImpl(org.apache.ibatis.logging.stdout.StdOutImpl.class); // 設置日志輸出到控制臺
        sessionFactory.setConfiguration(mybatisConfiguration);
        sessionFactory.setMapperLocations(new PathMatchingResourcePatternResolver().getResources("classpath*:com/example/poi/mapper/**/xml/*Mapper.xml"));
        return sessionFactory.getObject();
    }

情況5:使用mybatis-plus必須導入以下依賴(不要使用spring的mybatis,不然和spring本身數據庫管理沖突,還有就是注意使用springboot版本和mybatis版本問題,建議都是使用mybatis-plus,不然使用mybatis可能出現sqlFactory找不到等問題)

        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.5.1</version>
        </dependency>

情況6:打開項目的target目錄,觀察里面是否有對應的××Mapper.xml文件,若沒有,則在pom.xml文件中加入如下配置

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

原文鏈接:https://blog.csdn.net/qq_19891197/article/details/134550106

  • 上一篇:沒有了
  • 下一篇:沒有了
欄目分類
最近更新