代码:1、主配置文件SqlMapConfig.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMapConfig
PUBLIC "-//iBATIS.com//DTD SQL Map Config 2.0//EN"
"http://www.ibatis.com/dtd/sql-map-config-2.dtd">
<transactionManager type="JDBC">
<datasource type="SIMPLE">
<property name="JDBC.Driver" value="${driver}"/>
<property name="JDBC.ConnectionURL" value="${url}" />
<property name="JDBC.Username" value="${username}" />
<property name="JDBC.Password" value="${password}" />
</datasource>
</transactionManager>
<sqlMap resource="com/hx/domain/Person.xml" />

</sqlMapConfig>2、属性文件SqlMapConfig.properties driver=com.microsoft.jdbc.sqlserver.SQLServerDriver
url=jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=demo
username=sa
password=sa3、javabean的xml文件Person.xml<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sqlMap
PUBLIC "-//iBATIS.com//DTD SQL Map 2.0//EN"
"http://www.ibatis.com/dtd/sql-map-2.dtd">
<sqlMap namespace="Person">
<select id="getPerson" resultClass="com.hx.domain.Person">
SELECT PER_ID as id,
PER_NAME as name,
PER_AGE as age
FROM PERSON
</select>
</sqlMap>4、dao文件 PersonDAOImplpackage com.hx.dao;import java.io.IOException;
import java.io.Reader;
import java.sql.SQLException;
import java.util.List;import com.hx.domain.Person;
import com.ibatis.common.resources.Resources;
import com.ibatis.sqlmap.client.SqlMapClient;
import com.ibatis.sqlmap.client.SqlMapClientBuilder;public class PersonDAOImpl implements PersonDAO { private static SqlMapClient sqlMapClient;
static{
try {
String resource="com/hx/domain/SqlMapConfig.xml";
Reader reader=Resources.getResourceAsReader(resource);
sqlMapClient=SqlMapClientBuilder.buildSqlMapClient(reader);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}


public List<Person> queryAllPerson() {
List<Person> person = null;
try {
person = sqlMapClient.queryForList("getPerson");
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return person;
}}
错误如下:Exception in thread "main" java.lang.ExceptionInInitializerError
at com.hx.main.DemoMain.main(DemoMain.java:13)
Caused by: java.lang.RuntimeException: Error occurred.  Cause: com.ibatis.common.xml.NodeletException: Error parsing XML.  Cause: org.xml.sax.SAXParseException: Element type "datasource" must be declared.
at com.ibatis.sqlmap.engine.builder.xml.SqlMapConfigParser.parse(SqlMapConfigParser.java:49)
at com.ibatis.sqlmap.client.SqlMapClientBuilder.buildSqlMapClient(SqlMapClientBuilder.java:63)
at com.hx.dao.PersonDAOImpl.<clinit>(PersonDAOImpl.java:20)
... 1 more
Caused by: com.ibatis.common.xml.NodeletException: Error parsing XML.  Cause: org.xml.sax.SAXParseException: Element type "datasource" must be declared.
at com.ibatis.common.xml.NodeletParser.parse(NodeletParser.java:53)
at com.ibatis.sqlmap.engine.builder.xml.SqlMapConfigParser.parse(SqlMapConfigParser.java:46)
... 3 more
Caused by: org.xml.sax.SAXParseException: Element type "datasource" must be declared.
at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(Unknown Source)
at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.error(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.dtd.XMLDTDValidator.handleStartElement(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.dtd.XMLDTDValidator.startElement(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanStartElement(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(Unknown Source)
at com.ibatis.common.xml.NodeletParser.createDocument(NodeletParser.java:157)
at com.ibatis.common.xml.NodeletParser.parse(NodeletParser.java:50)
... 4 more大虾们帮忙啊!!!  错在哪里啊 大虾们帮忙

解决方案 »

  1.   

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE sqlMapConfig
    PUBLIC "-//iBATIS.com//DTD SQL Map Config 2.0//EN"
    "http://www.ibatis.com/dtd/sql-map-config-2.dtd">
    <properties resource="SqlMapConfig.properties"/> <settings
    maxSessions="64" maxTransactions="8" maxRequests="128" /><transactionManager type="JDBC">
    <datasource type="SIMPLE">
    <property name="JDBC.Driver" value="${driver}"/>
    <property name="JDBC.ConnectionURL" value="${url}" />
    <property name="JDBC.Username" value="${username}" />
    <property name="JDBC.Password" value="${password}" />
    </datasource>
    </transactionManager>
    <sqlMap resource="com/hx/domain/Person.xml" /></sqlMapConfig>
      

  2.   

    <properties resource="SqlMapConfig.properties"/>
      

  3.   

    在你的1、主配置文件SqlMapConfig.xml
    里加上<properties resource="SqlMapConfig.properties"/>因为他找不到这个东西在哪
      

  4.   

    仍然不行  是不是我导入的jar包有问题的 我导入了五个jar包
    ibatis-2.3.3.720.jar   msbase.jar   mssqlserver.jar  msutil.jar  sqljdbc.jar急啊
      

  5.   

    Error parsing XML. Cause: org.xml.sax.SAXParseException: Element type "datasource" must be declared.解析xml错误,说datasource元素为定义,你试试dataSource(s大写)
      

  6.   

    那就写成就行了。
    <?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE sqlMapConfig
            PUBLIC "-//ibatis.apache.org//DTD SQL Map Config 2.0//EN"
            "http://ibatis.apache.org/dtd/sql-map-config-2.dtd"><sqlMapConfig>
        <settings cacheModelsEnabled="true" enhancementEnabled="true"  
            lazyLoadingEnabled="true" errorTracingEnabled="true" maxRequests="32"  
            maxSessions="10" maxTransactions="5" useStatementNamespaces="true" />  
      
        <transactionManager type="JDBC">
            <dataSource type="SIMPLE">  
                <property name="JDBC.Driver" value="com.mysql.jdbc.Driver" />  
                <property name="JDBC.ConnectionURL"  value="jdbc:mysql://localhost:3306/test" />  
                <property name="JDBC.Username" value="root" />  
                <property name="JDBC.Password" value="root" />  
                <property name="Pool.MaximumActiveConnections" value="10" />  
                <property name="Pool.MaximumIdleConnections" value="5" />  
                <property name="Pool.MaximumCheckoutTime" value="120000" />  
                <property name="Pool.TimeToWait" value="500" />  
                <property name="Pool.PingQuery"  value="select 1 from sample" />  
                <property name="Pool.PingEnabled" value="false" />  
                <property name="Pool.PingConnectionsOlderThan" value="1" />  
                <property name="Pool.PingConnectionsNotUsedFor" value="1" />  
        </dataSource>
        </transactionManager>  
        <sqlMap resource="com/domain/Account.xml"/>  
    </sqlMapConfig>