国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

BindingException:Invalid bound statement (not found)異常

這篇具有很好參考價(jià)值的文章主要介紹了BindingException:Invalid bound statement (not found)異常。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

一、前言

本文的mybatis是與springboot整合時(shí)出現(xiàn)的異常,若使用的不是基于springboot,解決思路也大體一樣的。

二、從整合mybatis的三個(gè)步驟排查問(wèn)題

但在這之前,我們先要知道整合mybatis的三個(gè)重要的工作,如此才能排查,且往下看。

2.1 pom.xml配置**Mapper.xml文件的構(gòu)建路徑

我們打開(kāi)pom文件如下:

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

這部分代碼的作用是指定需要編譯到taget目錄下的資源文件。我們的程序運(yùn)行,都是執(zhí)行編譯好的taget目錄下的內(nèi)容,若taget里找不到xml文件資源就會(huì)報(bào)錯(cuò)Invalid bound statement (not found)。

每個(gè)人的項(xiàng)目配置都可能有些區(qū)別,但在這里我們只需要關(guān)注<includes>標(biāo)簽即可。還有對(duì)于不同的項(xiàng)目,xml的存放位置也可能不同,有的存在于src/main/java代碼下,有的存在于src/main/resources。

<include>**/*.xml</include>
這行代碼是用于構(gòu)建存在于src/main/java代碼中的xml文件。

<include></include>
<include>**/
.xml</include>
這行代碼是用于構(gòu)建存在于src/main/resources代碼中的所有文件。

上述,我們可以排查第一個(gè)可能拋出Invalid bound statement (not found)異常的情況,我們可以通過(guò)查看編譯好的taget目錄,如下:

情況一:

原代碼文件目錄:
invalid bound statement(not found),筆記,mybatis,java,spring boot

編譯失敗的情況:
invalid bound statement(not found),筆記,mybatis,java,spring boot

編譯成功的情況:
invalid bound statement(not found),筆記,mybatis,java,spring boot
情況二:
源代碼文件目錄:
invalid bound statement(not found),筆記,mybatis,java,spring boot

編譯失?。?br>invalid bound statement(not found),筆記,mybatis,java,spring boot

編譯成功:
invalid bound statement(not found),筆記,mybatis,java,spring boot

有時(shí),一直編譯不成功,那就將taget重新刪除,再編譯。

2.2 配置mapper類的包掃描路徑

這個(gè)步驟與Invalid bound statement (not found)異常無(wú)關(guān),但是它也是整合mybatis重要的步驟之一,這里也說(shuō)明一下,有兩種方式實(shí)現(xiàn),可根據(jù)自己的項(xiàng)目情況使用。(兩者擇其一)

通過(guò)注解的方式掃描:
invalid bound statement(not found),筆記,mybatis,java,spring boot

通過(guò)配置類方式掃描:
invalid bound statement(not found),筆記,mybatis,java,spring boot

這個(gè)步驟的目的是將我們定義的mapper類裝配到我們的ioc容器中。

若沒(méi)有掃描,啟動(dòng)時(shí)就會(huì)直接報(bào)找不到mapper的錯(cuò)誤,無(wú)法運(yùn)行項(xiàng)目。

2.3 application.yml文件中配置**Mapper.xml文件的掃描路徑

這個(gè)配置若不正確,也會(huì)導(dǎo)致Invalid bound statement (not found)異常。值得一說(shuō)的是,這一步驟的掃描是建立在步驟一的基礎(chǔ)之上的,若編譯好的taget目錄都沒(méi)有目標(biāo)文件,那這一步驟就更不用說(shuō)了。

一:

這里的掃描路徑配置,還需要注意自己的項(xiàng)目使用的原始mybatis還是mybatis-plus,它們的配置也有區(qū)別的,如下:

原始mybatis:

mybatis:
  mapper-locations: classpath:/cn/anycase/demo/mapper/xml/*Mapper.xml

mybatis-plus:

mybatis-plus:
  mapper-locations: classpath:cn/anycase/demo/mapper/xml/*.xml

本例用的是mybatis-plus:
invalid bound statement(not found),筆記,mybatis,java,spring boot

二:
使用mybatis-plus,當(dāng)xml和mapper類在同級(jí)目錄時(shí)可以省略這個(gè)掃描路徑的配置,所以我們看到的有些項(xiàng)目少了這個(gè)配置(mybatis應(yīng)該做了默認(rèn)的掃描操作,這里不做深究),但它并沒(méi)有錯(cuò),且能正常運(yùn)行。(原始mybatis是否也可以,本人未做相關(guān)測(cè)試)
invalid bound statement(not found),筆記,mybatis,java,spring boot

三:
還有一個(gè)需要注意的點(diǎn),前面步驟一說(shuō)了,mapper.xml文件可能存在于src/main/java代碼中,或存在于src/main/resources資源中,因此我們的配置路徑也有所不同,如下:
invalid bound statement(not found),筆記,mybatis,java,spring boot

Invalid bound statement (not found)這個(gè)異常,在常規(guī)下,通過(guò)上述的三個(gè)步驟可以百分百解決。

三、其他情況的Invalid bound statement (not found)異常

3.1 文件名導(dǎo)致的異常

invalid bound statement(not found),筆記,mybatis,java,spring boot

invalid bound statement(not found),筆記,mybatis,java,spring boot
上述截圖的文件目錄,在運(yùn)行過(guò)程中也出現(xiàn)了Invalid bound statement (not found)異常,仔細(xì)檢查了原代碼xml、targe下的xml目錄、yml中配置的掃描目錄,看似正確了但其實(shí)是有問(wèn)題的。

源代碼目錄的"mybatis.mapper"這個(gè)展示沒(méi)問(wèn)題,但target目錄下的"mybatis.mapper"這個(gè)展示有問(wèn)題,正常編譯好的target文件目錄都會(huì)是按層級(jí)展示的,但是這里確是連在了一起。所以發(fā)現(xiàn)問(wèn)題了,就是在創(chuàng)建mybatis/mapper層級(jí)目錄的時(shí)候,失誤創(chuàng)建了名字為"mybatis.mapper"目錄。

解決方案:刪除mybatis.mapper,重新建立,先建mybatis文件夾,再建立mapper文件夾,最后再建立.xml文件。

3.2 因?yàn)閿U(kuò)展的配置類導(dǎo)致yml掃描路徑配置不生效

這是另一種出現(xiàn)Invalid bound statement (not found)異常的情況,如下截圖
invalid bound statement(not found),筆記,mybatis,java,spring boot
如圖所示,我們的各項(xiàng)步驟和配置都檢查,仍舊不發(fā)現(xiàn)任何問(wèn)題,但一當(dāng)運(yùn)行時(shí)就會(huì)報(bào)錯(cuò),這很讓人百思不得其解。。。。。但其實(shí)問(wèn)題肯定是出在配置里頭,是不是哪個(gè)地方出現(xiàn)了覆蓋,導(dǎo)致掃描路徑不生效?

有了這個(gè)想法,我們就可以檢查源代碼中的所有關(guān)于mybatis的配置類。最后,我們發(fā)現(xiàn)了一個(gè)類,如下:
invalid bound statement(not found),筆記,mybatis,java,spring boot
源代碼:

@Configuration
public class MybatisPlusConfig implements EnvironmentAware {

    Environment env;

    @Bean("primary")
    @Primary
    public DataSource dataSource() throws ClassNotFoundException {
        return DataSourceBuilder.create()
                .url(env.getProperty("spring.datasource.url"))
                .type((Class<? extends DataSource>) Class.forName(env.getProperty("spring.datasource.type")))
                .driverClassName(env.getProperty("spring.datasource.driverClassName"))
                .username(env.getProperty("spring.datasource.username"))
                .password(env.getProperty("spring.datasource.password"))
                .build();
    }

    @Bean("mainsf")
    public SqlSessionFactory sqlSessionFactory(@Qualifier("primary") DataSource dataSource,
                                               GlobalConfiguration globalConfiguration) throws Exception {
        MybatisSqlSessionFactoryBean sqlSessionFactory = new MybatisSqlSessionFactoryBean();
        sqlSessionFactory.setDataSource(dataSource);
        MybatisConfiguration configuration = new MybatisConfiguration();
        configuration.setDefaultScriptingLanguage(MybatisXMLLanguageDriver.class);
        configuration.setJdbcTypeForNull(JdbcType.NULL);
        configuration.setMapUnderscoreToCamelCase(true);
        sqlSessionFactory.setConfiguration(configuration);
        Interceptor[] plugins;
        plugins = new Interceptor[]{new PaginationInterceptor()};
        sqlSessionFactory.setPlugins(plugins);
        sqlSessionFactory.setGlobalConfig(globalConfiguration);
        return sqlSessionFactory.getObject();
    }

    @Bean
    public GlobalConfiguration globalConfiguration() {
        GlobalConfiguration conf = new GlobalConfiguration();
        conf.setIdType(1);
        return conf;
    }

    @Override
    public void setEnvironment(Environment environment) {
        this.env = environment;
    }
}

問(wèn)題就發(fā)現(xiàn)了,這個(gè)配置類中自定義了一個(gè)SqlSessionFactory ,里邊也配置了MybatisConfiguration相關(guān)的東西,因此我們yml里面的配置mybatis-plus. mapper-locations便失效了。

解決方案一:將這個(gè)配置類里相關(guān)的mybatis配置去掉。
解決方案二:將xml挪到mapper類的同級(jí)目錄下。(因?yàn)槟J(rèn)會(huì)掃描mapper類的同級(jí)xml)

3.3 方法名和statement ID需要一致

這個(gè)錯(cuò)誤是比較沒(méi)水準(zhǔn),這里不做贅述。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-764300.html

到了這里,關(guān)于BindingException:Invalid bound statement (not found)異常的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Invalid bound statement (not found) 原因和解決方法

    Invalid bound statement (not found) 原因和解決方法

    在我springboot項(xiàng)目,啟動(dòng)的時(shí)候,報(bào)了 Invalid bound statement (not found) :綁定語(yǔ)句無(wú)效(未找到) mapper接口和mapper.xml文件沒(méi)有映射起來(lái) 1.查看mapper.xml中的namespace和接口mapper文件一致嗎 2.看一下 target 里面有沒(méi)有編譯的mapper.xml文件 沒(méi)有的話,打開(kāi)maven點(diǎn)擊clean一下,重新運(yùn)行就ok了

    2024年02月14日
    瀏覽(23)
  • mybatis plus報(bào)錯(cuò):Invalid bound statement (not found)

    mybatis plus報(bào)錯(cuò):Invalid bound statement (not found)

    有的同學(xué),在搭建mybatis plus項(xiàng)目時(shí),遇到Invalid bound statement (not found)的問(wèn)題,實(shí)質(zhì)上是mapper接口和mapper.xml沒(méi)有映射起來(lái)。 這種情況,常見(jiàn)的問(wèn)題有以下幾個(gè): 1、mapper.xml 里面的 namespace與實(shí)際的mapper類路徑不一致。 這個(gè)有個(gè)快捷的檢測(cè)辦法就是按住ctrl鍵,然后點(diǎn)擊namespace里

    2024年02月04日
    瀏覽(29)
  • Invalid bound statement (not found)出現(xiàn)原因和解決方法

    Invalid bound statement (not found)出現(xiàn)原因和解決方法

    出現(xiàn)的原因:mapper接口和mapper.xml文件沒(méi)有映射起來(lái)。 解決方法: 1、 .mapper.xml中的namespace和實(shí)際的mapper文件是否一致 2、 檢查mapper接口中的方法名與mapper.xml文件中的id是否一致 推薦大家去下載MyBatisX插件,可以自動(dòng)實(shí)現(xiàn)mapper接口到mapper.xml之間的映射,既能提高效率,又能避

    2024年02月11日
    瀏覽(32)
  • Invalid bound statement (not found):常見(jiàn)報(bào)錯(cuò)原因解決

    Invalid bound statement (not found):常見(jiàn)報(bào)錯(cuò)原因解決

    在SpringMVC項(xiàng)目中,通過(guò)mapper接口加載映射文件,完成數(shù)據(jù)庫(kù)的操作。 報(bào)錯(cuò):Invalid bound statement (not found): 1、xml文件的namespace不正確 2、XxxMapper.java的方法在XxxMapper.xml中沒(méi)有,運(yùn)行則會(huì)報(bào)此錯(cuò)誤 3、XxxMapper.java的方法返回值是List,但是沒(méi)有正確配置ResultMap,或者只配置ResultType 4、

    2023年04月27日
    瀏覽(38)
  • Invalid bound statement (not found)的原因以及解決方法

    Invalid bound statement (not found)的原因以及解決方法

    相信我們?cè)趯W(xué)習(xí)Mybatis的時(shí)候都出現(xiàn)過(guò) Invalid bound statement (not found) 這個(gè)錯(cuò)誤,一般由以下幾種可能導(dǎo)致這個(gè)錯(cuò)誤 例如: mapper: ?對(duì)應(yīng)的mapper.xml 這里建議小伙伴們下載一個(gè)插件,方便查看你的xml是否對(duì)應(yīng)了你想對(duì)應(yīng)的mapper接口 有了這個(gè)插件,你的接口mapper和對(duì)應(yīng)的mapper.xml都

    2024年02月15日
    瀏覽(31)
  • 出現(xiàn)Invalid bound statement (not found)問(wèn)題的解決辦法(已解決)

    出現(xiàn)Invalid bound statement (not found)問(wèn)題的解決辦法(已解決)

    今天在寫(xiě)項(xiàng)目時(shí)出現(xiàn)了 Invalid bound statement (not found):xxxx 這個(gè)問(wèn)題,網(wǎng)上找了很多博客都不行,最后修改了配置文件解決了問(wèn)題,借此將此類問(wèn)題常見(jiàn)的解決辦法匯總一下。 1.mapper接口中的方法名和mapper.xml中的id標(biāo)簽不一致 推薦大家裝MyBatisX這個(gè)插件,這樣如果mapper中的方法名

    2023年04月26日
    瀏覽(19)
  • Junit啟動(dòng)測(cè)試mybatis xml文件BindingException: Invalid bound statement問(wèn)題

    背景:1、正常啟動(dòng),xml文件放在java目錄和resource目錄下均正常 2、junit啟動(dòng),xml文件放在resource目錄下正常,放在 java目錄下 報(bào)BindingException錯(cuò)誤 mapperlocation綁定地址為:\\\"classpath:com/a/b/**/*.xml\\\" ? 原因就在于綁定的地址有問(wèn)題。 ? junit生成的test-classes下的測(cè)試類test所在目錄與c

    2023年04月20日
    瀏覽(26)
  • myBatis plus 調(diào)用基本方法(insert update.... ) Invalid bound statement (not found)

    直接調(diào)用BaseMapper 或者 是Iservice 里面的方法報(bào)如下錯(cuò),大概率是依賴版本沖突 我的依賴版本如下,解決了這個(gè)問(wèn)題 “org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)” 錯(cuò)誤通常表示在 MyBatis 中找不到有效的綁定語(yǔ)句。 這個(gè)錯(cuò)誤可能有以下幾個(gè)可能的原因: SQL

    2024年02月13日
    瀏覽(27)
  • 解決Mybatis報(bào)錯(cuò)并分析原因:Invalid bound statement (not found): com.xxx.mapper.xxx

    解決Mybatis報(bào)錯(cuò)并分析原因:Invalid bound statement (not found): com.xxx.mapper.xxx

    今天同事在Mapper.xml自定義寫(xiě)了一個(gè)SQL,但是調(diào)用mapper的時(shí)候缺報(bào)錯(cuò) 我大概還原下場(chǎng)景 org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.wyh.mapper.UserMapper.findByIDWYH 具體如下 一開(kāi)始我覺(jué)得是不是沒(méi)有掃描到mapper包,但是看了啟動(dòng)類,確實(shí)也配注解了呀 然后我又想 是

    2023年04月08日
    瀏覽(25)
  • org.apache.ibatis.binding.BindingException: Parameter ‘status‘ not found.

    org.apache.ibatis.binding.BindingException: Parameter ‘status‘ not found.

    從控制層傳入的參數(shù),在mapper文件中接收時(shí),要使用@Param注解來(lái)進(jìn)行接收,否則就會(huì)不知道哪個(gè)參數(shù)傳的是哪個(gè)位置,如果方法中有多個(gè)參數(shù),需要使用@Param(SQL參數(shù)占位符名稱); 在原代碼的基礎(chǔ)上添加@Param注解 修改完之后,成功獲取參數(shù)。

    2024年02月12日
    瀏覽(31)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包