XML
driver=com.microsoft.sqlserver.jdbc.SQLServerDriver
url =jdbc:sqlserver://localhost:1433;DatabaseName=chenyuan;encrypt=true;trustServerCertificate=true
user = sa
password = 123456
要让你的 mybatis-config.xml 配置文件成功读取到 mybatis.properties 文件中的数据库连接信息,你只需要在 <configuration> 标签内部的最上方,添加一个 <properties> 标签来引入该属性文件。
修改后的 mybatis-config.xml 代码如下:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<properties resource="mybatis.properties"/>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="org/mybatis/example/BlogMapper.xml"/>
</mappers>
</configuration>
💡 两个需要注意的细节(避坑指南):
先把 mybatis-config.xml 里的路径改成 com/counter/dao/Usermapper.xml 吧,距离成功运行就差这一步了!
<build>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
<filtering>false</filtering>
</resource>
</resources>
</build>
-
标签的顺序不能乱 :MyBatis 对 XML 内部标签的顺序有严格要求。
<properties>标签必须 放在<configuration>的第一位(在<environments>和<mappers>的上方),否则项目启动时会报 XML 校验错误。 -
文件的存放路径 :代码中的
resource="mybatis.properties"表示从类路径(ClassPath)根目录下寻找该文件。在标准的 Maven 或 SSM 项目中,你需要把mybatis.properties和mybatis-config.xml都放在src/main/resources目录下。是的,你观察得非常敏锐!这里确实还没有绑定。 如果不在这里修改路径,MyBatis 启动时就会去报错找不到
org/mybatis/example/BlogMapper.xml,从而无法加载你的 SQL 语句。看一眼你左侧的项目结构,你的
Usermapper.xml是直接放在com/counter/dao这个包路径下的。因此,你必须把mybatis-config.xml第 20 行的<mapper>标签修改为你项目的真实路径。请将第 19-21 行的
<mappers>标签区域修改为以下内容:XML
<mappers> <mapper resource="com/counter/dao/Usermapper.xml"/> </mappers>💡 顺便提醒一个极易踩坑的"资源导出问题":
在 Maven 项目中,如果你把 XML 映射文件(如
Usermapper.xml)放在src/main/java的主代码包下,而不是放在src/main/resources资源目录下,Maven 在编译时默认会忽略掉 java 包底下的 XML 文件。这会导致程序运行时报经典的
org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)错误。解决办法(二选一):
-
推荐做法 :在右侧
resources目录下新建一个一模一样的空文件夹目录com/counter/dao,然后把Usermapper.xml挪过去。 -
快捷做法 :如果不挪动文件,就必须在你项目的
pom.xml中加入以下 资源过滤配置,强迫 Maven 去编译 java 文件夹下的 XML 文件: