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
把其他配置贴出来
重新写了下配置文件,又没有问题了