添加!DOCTYPE的方法行不通,
版本应该也没问题
文件名也没问题
就是出不来,新建了项目,配置文件换了两种写法,改了好多次,结果都是一样的错误
请大家帮我看看代码错在哪啊
首先是测试文件
package com.yangquan.test;
import com.yangquan.dao.OusersMapper;
import com.yangquan.domin.Ousers;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.springframework.context.annotation.ImportResource;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import java.io.IOException;
import java.io.InputStream;
public class t2 {
public static void main(String[] args){
InputStream inputStream = null;
try {
inputStream = Resources.getResourceAsStream("springApplication.xml");
}catch (IOException e){
e.printStackTrace();
}
SqlSessionFactory build = new SqlSessionFactoryBuilder().build(inputStream);
SqlSession sqlSession = build.openSession();
OusersMapper ousersMapper = sqlSession.getMapper(OusersMapper.class);
Ousers ousers = (Ousers) ousersMapper.selectAll();
System.out.println(ousers);
sqlSession.close();
}
}
然后是配置文件springApplication.xml
<?xml version="1.0" encoding="utf-8" ?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx.xsd">
<context:component-scan base-package="com.yangquan"/>
<context:property-placeholder location="classpath:db.properties"/>
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"
>
<property name="driverClass" value="${driver}"/>
<property name="jdbcUrl" value="${url}"/>
<property name="user" value="${username}"/>
<property name="password" value="${password}"/>
<!-- c3p0连接池的私有属性 -->
<property name="maxPoolSize" value="${maxActive}"/>
<property name="minPoolSize" value="${minActive}"/>
<property name="initialPoolSize" value="${initialSize}"/>
<!-- 关闭连接后不自动commit -->
<property name="autoCommitOnClose" value="${autoCommitOnClose}"/>
<!-- 获取连接超时时间 -->
<property name="checkoutTimeout" value="${maxWait}"/>
<!-- 当获取连接失败重试次数 -->
<property name="acquireRetryAttempts" value="${acquireRetryAttempts}"/>
</bean>
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<!--注入我们的数据源 -->
<property name="dataSource" ref="dataSource">
</property>
<property name="typeAliasesPackage" value="com.yangquan.domin"/>
<!--指定mybatis的配置文件路径,该配置文件下不需要再定义数据库连接信息和mapper信息了,但是可以有一些关于mybatis的配置信息-->
<!--扫描mapper配置文件中的.xml文件-->
<property name="mapperLocations" value="classpath*:com/yangquan/mapper/*.xml"/>
<!--设置别名-->
</bean>
<bean id="mapperScannerConfigurer" class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.yangquan.dao"/>
</bean>
<bean id="myuser" class="com.yangquan.domin.Ousers"></bean>
</beans>
我的目录结构
Exception in thread "main" org.apache.ibatis.exceptions.PersistenceException:
### Error building SqlSession.
### Cause: org.apache.ibatis.builder.BuilderException: Error creating document instance. Cause: org.xml.sax.SAXParseException; lineNumber: 11; columnNumber: 65; 文档根元素 "beans" 必须匹配 DOCTYPE 根 "null"。
at org.apache.ibatis.exceptions.ExceptionFactory.wrapException(ExceptionFactory.java:30)
at org.apache.ibatis.session.SqlSessionFactoryBuilder.build(SqlSessionFactoryBuilder.java:82)
at org.apache.ibatis.session.SqlSessionFactoryBuilder.build(SqlSessionFactoryBuilder.java:66)
at com.yangquan.test.t2.main(t2.java:25)
Caused by: org.apache.ibatis.builder.BuilderException: Error creating document instance. Cause: org.xml.sax.SAXParseException; lineNumber: 11; columnNumber: 65; 文档根元素 "beans" 必须匹配 DOCTYPE 根 "null"。
at org.apache.ibatis.parsing.XPathParser.createDocument(XPathParser.java:263)
at org.apache.ibatis.parsing.XPathParser.<init>(XPathParser.java:127)
at org.apache.ibatis.builder.xml.XMLConfigBuilder.<init>(XMLConfigBuilder.java:82)
at org.apache.ibatis.session.SqlSessionFactoryBuilder.build(SqlSessionFactoryBuilder.java:79)
... 2 more
Caused by: org.xml.sax.SAXParseException; lineNumber: 11; columnNumber: 65; 文档根元素 "beans" 必须匹配 DOCTYPE 根 "null"。
at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:204)
at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.error(ErrorHandlerWrapper.java:135)
at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:396)
at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:327)
at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:284)
at com.sun.org.apache.xerces.internal.impl.dtd.XMLDTDValidator.rootElementSpecified(XMLDTDValidator.java:1601)
at com.sun.org.apache.xerces.internal.impl.dtd.XMLDTDValidator.handleStartElement(XMLDTDValidator.java:1879)
at
mapper的映射文件和配置文件是自动生成的,应该没错。
网上能试的方法都试过了,但都没用,求各位帮忙找找错误在哪里
你用spring的配置文件去启动mybatis?人才啊
根据您提供的错误信息,可以看出是配置文件的问题,具体来说是springApplication.xml中的DTD类型未正确声明所导致的错误。
您需要在springApplication.xml文件的开头声明正确的DTD类型,如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans xmlns="http://www.springframework.org/schema/beans"
...
您可以在spring的官网上找到对应版本的DTD声明,如3.0的DTD声明为:
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans-3.0.dtd">
在XML配置文件中,<!DOCTYPE>必须是文档的第一行,位于之前。
另外一个错误是MyBatis在解析XML配置文件时发生的。根据错误信息,似乎是你的XML配置文件中存在问题,具体来说是在第11行第65列有一个不匹配的问题,即“文档根元素 "beans" 必须匹配 DOCTYPE 根 "null"”。这意味着你的XML配置文件中可能存在一个DTD(Document Type Definition)声明,但是它没有被正确地引用或者被省略了。
解决这个问题,你可以按照以下步骤尝试:
1 检查XML配置文件的第11行第65列是否存在拼写错误或其他语法错误。确认是否有DTD声明,如果存在,尝试检查它的正确性。
2 如果存在DTD声明,确认其是否正确引用。如果没有必要,可以将其省略掉。
3 确认你的XML配置文件是否符合MyBatis的要求。你可以参考官方文档来确定是否存在问题。
4 如果以上步骤都没有解决问题,可以尝试更换MyBatis版本或联系MyBatis社区来获得更多帮助。
总的来说,这个问题的原因比较多,需要仔细检查XML配置文件中的语法问题和DTD声明的正确性。希望这些提示能帮到你解决问题。
引用chatGPT作答,根据你提供的错误信息,“文档根元素 "beans" 必须匹配 DOCTYPE 根 "null"”,似乎是因为解析XML配置文件时找不到DOCTYPE声明或无法匹配。
尝试在XML配置文件的开头添加以下DOCTYPE声明:
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
确保你的XML配置文件符合Spring的DTD标准,并且正确引用了相关的DTD文件,如果还不行,可以尝试换用更简单的DTD文件进行测试,例如:
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd">
如果你还是遇到问题,建议你检查一下Spring框架的版本是否匹配,并且确保你的XML配置文件没有语法错误。
以下答案由GPT-3.5大模型与博主波罗歌共同编写:
在文档开头处添加以下代码:
它应该与beans元素同一级别。完整的springApplication.xml文件应如下所示:
<beans xmlns="http://w/
不知道你这个问题是否已经解决, 如果还没有解决的话:抱歉,没有具体的问题无法提供解决方案。请提供具体的问题。