MyBatis配置数据库连接提示root is null,jdbc测试连接正常,请问下问题点在哪

问题描述:

MyBatis配置学习过程中出现空指针异常,提示原因为“root” is null,检查配置与教程并无差异,想请问下问题是出在哪儿的。

问题相关代码:

Maven配置

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.pan</groupId>
    <artifactId>MyBatis-demo</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <maven.compiler.source>17</maven.compiler.source>
        <maven.compiler.target>17</maven.compiler.target>
    </properties>

    <dependencies>
        <!--mybatis依赖-->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.9</version>
        </dependency>
        <!--mysql依赖-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.29</version>
        </dependency>
    </dependencies>
</project>

MyBatis配置

<?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>

    <!--
    environments:配置数据库连接环境信息。可以配置多个environment,通过default属性切换不同的environment
    -->
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <!--数据库连接信息-->
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/material"/>
                <property name="username" value="root"/>
                <property name="password" value="rootpw"/>
            </dataSource>
        </environment>
    </environments>

    <mappers>
        <!--加载sql的映射文件-->
        <mapper resource="UserMapper.xml"/>
    </mappers>

</configuration>
运行结果及报错内容:
"C:\Program Files\Java\jdk-17.0.2\bin\java.exe" "-javaagent:D:\IntelliJ IDEA 2022.1.1\lib\idea_rt.jar=9735:D:\IntelliJ IDEA 2022.1.1\bin" -Dfile.encoding=UTF-8 -classpath "D:\IntelliJ IDEA 2022.1.1\projects\MyBatis-demo\target\classes;D:\apache-maven-3.8.5\mvn_resp\org\mybatis\mybatis\3.5.9\mybatis-3.5.9.jar;D:\apache-maven-3.8.5\mvn_resp\mysql\mysql-connector-java\8.0.29\mysql-connector-java-8.0.29.jar;D:\apache-maven-3.8.5\mvn_resp\com\google\protobuf\protobuf-java\3.19.4\protobuf-java-3.19.4.jar" com.pan.MyBatisDemo
Exception in thread "main" org.apache.ibatis.exceptions.PersistenceException: 
### Error building SqlSession.
### The error may exist in SQL Mapper Configuration
### Cause: org.apache.ibatis.builder.BuilderException: Error parsing SQL Mapper Configuration. Cause: java.lang.NullPointerException: Cannot invoke "org.apache.ibatis.parsing.XNode.evalNode(String)" because "root" is null
    at org.apache.ibatis.exceptions.ExceptionFactory.wrapException(ExceptionFactory.java:30)
    at org.apache.ibatis.session.SqlSessionFactoryBuilder.build(SqlSessionFactoryBuilder.java:80)
    at org.apache.ibatis.session.SqlSessionFactoryBuilder.build(SqlSessionFactoryBuilder.java:64)
    at com.pan.MyBatisDemo.main(MyBatisDemo.java:20)
Caused by: org.apache.ibatis.builder.BuilderException: Error parsing SQL Mapper Configuration. Cause: java.lang.NullPointerException: Cannot invoke "org.apache.ibatis.parsing.XNode.evalNode(String)" because "root" is null
    at org.apache.ibatis.builder.xml.XMLConfigBuilder.parseConfiguration(XMLConfigBuilder.java:122)
    at org.apache.ibatis.builder.xml.XMLConfigBuilder.parse(XMLConfigBuilder.java:99)
    at org.apache.ibatis.session.SqlSessionFactoryBuilder.build(SqlSessionFactoryBuilder.java:78)
    ... 2 more
Caused by: java.lang.NullPointerException: Cannot invoke "org.apache.ibatis.parsing.XNode.evalNode(String)" because "root" is null
    at org.apache.ibatis.builder.xml.XMLConfigBuilder.parseConfiguration(XMLConfigBuilder.java:106)
    ... 4 more

进程已结束,退出代码1
我的解答思路和尝试过的方法

担心是连接驱动和账号密码的问题,写了下JDBC的测试类,没有发现异常,网上找了下相同问题,没找到情况相同的解决方案

这不是说了么

The error may exist in SQL Mapper Configuration

把其他配置贴出来

重新写了下配置文件,又没有问题了