maven異常Invalid?bound?statement(not?found)的問(wèn)題解決
Maven異常:Invalid bound statement (not found) 詳解
問(wèn)題描述
當(dāng)使用Maven構(gòu)建的MyBatis項(xiàng)目運(yùn)行時(shí),出現(xiàn)Invalid bound statement (not found)錯(cuò)誤,表明MyBatis無(wú)法找到對(duì)應(yīng)的SQL映射語(yǔ)句。這是MyBatis項(xiàng)目中常見(jiàn)的配置問(wèn)題之一。
可能原因分析
XML映射文件未被正確加載
- 映射文件未放置在正確資源目錄下
- Maven未將XML文件打包到最終JAR/WAR中
- 文件命名或路徑與配置不匹配
Mapper接口與XML映射文件對(duì)應(yīng)關(guān)系錯(cuò)誤
- 命名空間(namespace)與Mapper接口全限定名不一致
- SQL語(yǔ)句ID與方法名不匹配
- 方法返回類(lèi)型與resultType/resultMap不匹配
構(gòu)建配置問(wèn)題
- Maven資源過(guò)濾配置不當(dāng)
- 構(gòu)建時(shí)未正確包含XML文件
解決方案
1. 檢查文件位置和命名
確保XML映射文件位于標(biāo)準(zhǔn)Maven資源目錄中:
src/main/resources/com/example/mapper/UserMapper.xml
對(duì)應(yīng)的Mapper接口應(yīng)位于:
src/main/java/com/example/mapper/UserMapper.java
2. 驗(yàn)證Maven資源配置
在pom.xml中添加資源包含配置:
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.xml</include>
</includes>
</resource>
</resources>
</build>
3. 檢查命名空間和SQL ID
確保XML中的namespace與接口全限定名一致:
<mapper namespace="com.example.mapper.UserMapper">
<select id="selectById" resultType="com.example.model.User">
SELECT * FROM user WHERE id = #{id}
</select>
</mapper>
對(duì)應(yīng)的接口方法應(yīng)為:
public interface UserMapper {
User selectById(Long id);
}
4. 驗(yàn)證構(gòu)建輸出
構(gòu)建后檢查生成的JAR/WAR文件,確認(rèn):
- XML文件存在于正確路徑
- 文件內(nèi)容未被過(guò)濾或修改
5. 其他檢查項(xiàng)
MyBatis配置文件中是否正確指定了mapper位置:
<mappers> <package name="com.example.mapper"/> </mappers>如果使用注解和XML混合方式,確保沒(méi)有沖突
檢查IDE是否將XML文件正確識(shí)別為資源文件
常見(jiàn)應(yīng)用場(chǎng)景示例
場(chǎng)景1:Spring Boot項(xiàng)目中使用MyBatis
需要添加mybatis-spring-boot-starter依賴(lài)
確保application.properties中配置了mapper位置:
mybatis.mapper-locations=classpath:mapper/**/*.xml
場(chǎng)景2:多模塊項(xiàng)目中
- 確保依賴(lài)模塊的resource文件被正確包含
- 可能需要使用maven-resources-plugin復(fù)制資源
通過(guò)以上步驟排查,通??梢越鉀QInvalid bound statement異常問(wèn)題。
Maven 詳解
1. Maven 概述
Maven 是一個(gè)基于項(xiàng)目對(duì)象模型(POM)的項(xiàng)目管理工具,主要用于 Java 項(xiàng)目的構(gòu)建、依賴(lài)管理和項(xiàng)目信息管理。它簡(jiǎn)化了構(gòu)建過(guò)程,提供了一套標(biāo)準(zhǔn)的構(gòu)建生命周期和便捷的依賴(lài)管理機(jī)制。
1.1 核心概念
- POM (Project Object Model):XML 文件,描述項(xiàng)目的基本信息、依賴(lài)關(guān)系、構(gòu)建配置等
- 坐標(biāo) (Coordinates):通過(guò) groupId、artifactId、version 唯一標(biāo)識(shí)一個(gè)項(xiàng)目或依賴(lài)
- 倉(cāng)庫(kù) (Repository):用于存儲(chǔ)項(xiàng)目依賴(lài)和插件
- 本地倉(cāng)庫(kù):用戶(hù)本地的依賴(lài)緩存
- 中央倉(cāng)庫(kù):Maven 官方維護(hù)的公共倉(cāng)庫(kù)
- 私 服:企業(yè)內(nèi)部的私有倉(cāng)庫(kù)
- 生命周期 (Lifecycle):定義了一組有序的階段(phase)
- 插件 (Plugin):用于執(zhí)行特定任務(wù)的工具
2. 安裝與配置
2.1 安裝步驟
- 下載 Maven 二進(jìn)制包
- 解壓到指定目錄
- 配置環(huán)境變量:
- 設(shè)置
M2_HOME指向 Maven 安裝目錄 - 將
%M2_HOME%\bin添加到 PATH 環(huán)境變量
- 設(shè)置
- 驗(yàn)證安裝:命令行執(zhí)行
mvn -v
2.2 配置詳解
- settings.xml:全局配置文件,位于
conf目錄- 配置本地倉(cāng)庫(kù)路徑
- 配置鏡像倉(cāng)庫(kù)
- 配置代理服務(wù)器
- 配置服務(wù)器認(rèn)證信息
<settings>
<localRepository>/path/to/local/repo</localRepository>
<mirrors>
<mirror>
<id>aliyun</id>
<name>Aliyun Maven Mirror</name>
<url>https://maven.aliyun.com/repository/public</url>
<mirrorOf>central</mirrorOf>
</mirror>
</mirrors>
</settings>
3. 核心功能
3.1 依賴(lài)管理
依賴(lài)聲明示例:
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>5.3.18</version>
</dependency>
</dependencies>
依賴(lài)范圍(Scope):
- compile:默認(rèn)范圍,編譯和運(yùn)行時(shí)都有效
- provided:編譯時(shí)有效,運(yùn)行時(shí)由容器提供
- runtime:運(yùn)行時(shí)有效
- test:僅測(cè)試時(shí)有效
- system:類(lèi)似 provided,但需要顯式指定 JAR 路徑
3.2 構(gòu)建生命周期
Maven 有三套獨(dú)立的生命周期:
- clean:清理項(xiàng)目
- pre-clean
- clean
- post-clean
- default:項(xiàng)目構(gòu)建和部署
- validate
- compile
- test
- package
- verify
- install
- deploy
- site:生成項(xiàng)目站點(diǎn)
- site
- site-deploy
3.3 常用命令
mvn clean:清理項(xiàng)目mvn compile:編譯源代碼mvn test:運(yùn)行測(cè)試mvn package:打包項(xiàng)目mvn install:安裝到本地倉(cāng)庫(kù)mvn deploy:部署到遠(yuǎn)程倉(cāng)庫(kù)
4. 高級(jí)特性
4.1 多模塊管理
通過(guò)父 POM 管理多個(gè)子模塊:
<modules> <module>module1</module> <module>module2</module> </modules>
4.2 Profile 配置
根據(jù)不同環(huán)境使用不同配置:
<profiles>
<profile>
<id>dev</id>
<properties>
<env>development</env>
</properties>
</profile>
</profiles>
4.3 插件配置
示例:配置 Java 編譯版本
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
5. 最佳實(shí)踐
- 使用最新穩(wěn)定版本
- 合理組織項(xiàng)目結(jié)構(gòu)
- 明確依賴(lài)范圍
- 使用私 服管理企業(yè)依賴(lài)
- 定期清理本地倉(cāng)庫(kù)
- 使用 dependencyManagement 統(tǒng)一管理依賴(lài)版本
- 為重要插件鎖定版本號(hào)
6. 常見(jiàn)問(wèn)題解決
- 依賴(lài)沖突:使用
mvn dependency:tree分析依賴(lài)樹(shù) - 構(gòu)建失敗:檢查日志,常見(jiàn)原因包括網(wǎng)絡(luò)問(wèn)題、版本沖突等
- 插件執(zhí)行錯(cuò)誤:檢查插件配置和版本兼容性
- 倉(cāng)庫(kù)訪(fǎng)問(wèn)問(wèn)題:檢查 settings.xml 配置和網(wǎng)絡(luò)連接
7. 與其他工具的集成
- IDE 集成:Eclipse、IntelliJ IDEA 等主流 IDE 都支持 Maven
- 持續(xù)集成:與 Jenkins、GitLab CI 等 CI 工具集成
- 代碼質(zhì)量:與 SonarQube、Checkstyle 等工具集成
通過(guò)合理使用 Maven,可以顯著提高 Java 項(xiàng)目的開(kāi)發(fā)效率和構(gòu)建質(zhì)量。
到此這篇關(guān)于maven異常Invalid bound statement(not found)的問(wèn)題解決的文章就介紹到這了,更多相關(guān)maven Invalid bound statement內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
java與C 代碼運(yùn)行效率的對(duì)比(整理)
最近和朋友無(wú)意間討論起了 有關(guān)java 和C 的 效率問(wèn)題, (我是java 推介者, 他是 c 語(yǔ)言推介者, 他做的是嵌入式)故,想通過(guò)網(wǎng)絡(luò)查詢(xún)一下, 總結(jié)一下,兩者到底效率如何,其有何差異,原因又是啥?各種優(yōu)勢(shì)有在何處?2021-04-04
Java實(shí)戰(zhàn)之酒店人事管理系統(tǒng)的實(shí)現(xiàn)
這篇文章主要介紹了如何用Java實(shí)現(xiàn)酒店人事管理系統(tǒng),文中采用的技術(shù)有:JSP、Spring、SpringMVC、MyBatis等,感興趣的小伙伴可以學(xué)習(xí)一下2022-03-03
Canal搭建?idea設(shè)置及采集數(shù)據(jù)到kafka的操作方法
這篇文章主要介紹了Canal搭建idea設(shè)置及采集數(shù)據(jù)到kafka的相關(guān)知識(shí),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-05-05
基于Transactional事務(wù)的使用以及注意說(shuō)明
這篇文章主要介紹了Transactional事務(wù)的使用以及注意說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-07-07
使用Jitpack發(fā)布開(kāi)源Java庫(kù)的詳細(xì)流程
這篇文章主要介紹了使用Jitpack發(fā)布開(kāi)源Java庫(kù)的詳細(xì)流程,本文通過(guò)圖文實(shí)例代碼相結(jié)合給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-02-02

