mybatis配置文件各元素顺序要求
在搭建mybatis环境的时候,报了个如下Error信息:
Cause: org.apache.ibatis.builder.BuilderException: Error creating document instance. Cause: org.xml.sax.SAXParseException: The content of element type "configuration" must match "(properties?,settings?,typeAliases?,typeHandlers?,objectFactory?,objectWrapperFactory?,plugins?,environments?,databaseIdProvider?,mappers?)".
mybatis版本3.2.7
反复查看mybatis的配置文件,没有发现问题。
遂百度下子。
有网友说,Mybatis是适用DTD作为XML的校验文档,而XML规范中DTD顺序是有严格要求的。
于是打开Mybatis的DTD文件,按照DTD中定义的顺序重新调整mybatis配置文件的顺序,执行,OK。
Mybatis的DTD文件:http://mybatis.org/dtd/mybatis-3-config.dtd
元素顺序:
properties
settings
typeAliases
typeHandlers
objectFactory
objectWrapperFactory
plugins
environments?
databaseIdProvider
mappers
我的最终Mybatis配置文件:

1 <?xml version="1.0" encoding="UTF-8" ?> 2 <!DOCTYPE configuration 3 PUBLIC "-//mybatis.org//DTD Config 3.0//EN" 4 "http://mybatis.org/dtd/mybatis-3-config.dtd"> 5 <configuration> 6 7 <properties resource="jdbc.properties"> 8 </properties> 9 10 <settings> 11 <setting name="cacheEnabled" value="false" /><!-- default:true --> 12 <!-- <setting name="lazyLoadingEnabled" value="false"/> --><!-- default:false --> 13 <setting name="multipleResultSetsEnabled" value="false" /><!-- 14 default:true --> 15 <!-- <setting name="mapUnderscoreToCamelCase" value="false"/> --><!-- default:false --> 16 <!-- <setting name="callSettersOnNulls" value="false"/> --><!-- default:false --> 17 <setting name="logPrefix" value="newpp" /><!-- default: --> 18 <setting name="logImpl" value="LOG4J" /><!-- default: ;options:SLF4J,LOG4J,LOG4J2,COMMONS_LOGGING,JDK_LOGGING,STDOUT_LOGGING,NO_LOGGING --> 19 </settings> 20 21 <typeAliases> 22 <typeAlias alias="UserInfoEntity" type="com.newpp.biz.demo.entity.UserInfoEntity" /> 23 </typeAliases> 24 25 <plugins> 26 <plugin interceptor="com.newpp.core.base.fw.interceptor.DataUpdateInterceptor"></plugin> 27 </plugins> 28 29 <environments default="development"> 30 <environment id="development"> 31 <transactionManager type="JDBC" /> 32 <dataSource type="POOLED"> 33 <property name="driver" value="${driverClassName}" /> 34 <property name="url" value="${url}" /> 35 <property name="username" value="${username}" /> 36 <property name="password" value="${password}" /> 37 </dataSource> 38 </environment> 39 </environments> 40 41 <mappers> 42 <mapper resource="com/newpp/biz/demo/sql/userMapper.xml" /> 43 </mappers> 44 </configuration>