<resultMap id="accountTest"  class="com.yeepay.entity.Account">
<result property="id" column="id"/>
<result property="cardType" column="card_type"/>
<result property="userID" column="user_id"/>
<result property="balance" column="balance"/>
<result property="overdraftDegrees" column="overdraft_degrees"/>
</resultMap>
<resultMap class="user" id="resultAllUser">
<result property="id" column="id" />
<result property="name" column="name" />
<result property="email" column="email" />
<result property="password" column="password" />
<result property="account"  column="id" resultMap="accountTest"/>
<!-- 把要使用的字段值传过去 -->
</resultMap>

<statement id="selectUserbyIdJoin" resultMap="resultAllUser">
<![CDATA[   
  select u.*,a.* from table_ibatis_user u join table_ibatis_account a on u.id = a.user_id
   where u.id =#value# 
   ]]> 

</statement>

异常:com.ibatis.sqlmap.client.SqlMapException: There was an error while building the SqlMap instance.  
--- The error occurred in com/yeepay/entity/User.xml.  
--- The error occurred while loading the SQL Map resource.  
--- Cause: com.ibatis.sqlmap.client.SqlMapException: XML Parser Error.  Cause: org.xml.sax.SAXException: Error: URI=null Line=81: Attribute "resultMap" must be declared for element type "result".
Caused by: org.xml.sax.SAXException: Error: URI=null Line=81: Attribute "resultMap" must be declared for element type "result".
Caused by: com.ibatis.sqlmap.client.SqlMapException: XML Parser Error.  Cause: org.xml.sax.SAXException: Error: URI=null Line=81: Attribute "resultMap" must be declared for element type "result".
Caused by: org.xml.sax.SAXException: Error: URI=null Line=81: Attribute "resultMap" must be declared for element type "result".
at com.ibatis.sqlmap.engine.builder.xml.XmlSqlMapClientBuilder.buildSqlMap(XmlSqlMapClientBuilder.java:243)
at com.ibatis.sqlmap.client.SqlMapClientBuilder.buildSqlMapClient(SqlMapClientBuilder.java:61)
at com.yeepay.dao.UserDaoImpl.<clinit>(UserDaoImpl.java:26)
at com.yeepay.test.UserTest.init(UserTest.java:25)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.junit.internal.runners.BeforeAndAfterRunner.invokeMethod(BeforeAndAfterRunner.java:74)
at org.junit.internal.runners.BeforeAndAfterRunner.runBefores(BeforeAndAfterRunner.java:50)
at org.junit.internal.runners.BeforeAndAfterRunner.runProtected(BeforeAndAfterRunner.java:33)
at org.junit.internal.runners.TestMethodRunner.runMethod(TestMethodRunner.java:75)
at org.junit.internal.runners.TestMethodRunner.run(TestMethodRunner.java:45)
at org.junit.internal.runners.TestClassMethodsRunner.invokeTestMethod(TestClassMethodsRunner.java:66)
at org.junit.internal.runners.TestClassMethodsRunner.run(TestClassMethodsRunner.java:35)
at org.junit.internal.runners.TestClassRunner$1.runUnprotected(TestClassRunner.java:42)
at org.junit.internal.runners.BeforeAndAfterRunner.runProtected(BeforeAndAfterRunner.java:34)
at org.junit.internal.runners.TestClassRunner.run(TestClassRunner.java:52)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:38)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)
Caused by: com.ibatis.sqlmap.client.SqlMapException: XML Parser Error.  Cause: org.xml.sax.SAXException: Error: URI=null Line=81: Attribute "resultMap" must be declared for element type "result".

解决方案 »

  1.   

    resultMap class="user" 这个user配置全路径,找不到
      

  2.   

    <?xml version="1.0" encoding="GBK" ?>
    <!DOCTYPE sqlMap
    PUBLIC "-//iBATIS.com//DTD SQL Map 2.0//EN" 
    "http://www.ibatis.com/dtd/sql-map-2.dtd">
    <sqlMap>
    <!-- 为类起一个别名方便调用 -->
    <typeAlias alias="user" type="com.yeepay.entity.User" />
    <typeAlias alias="account" type="com.yeepay.entity.Account" />
    <resultMap id="accountTest" class="com.yeepay.entity.Account">
    <result property="id" column="id"/>
    <result property="cardType" column="card_type"/>
    <result property="userID" column="user_id"/>
    <result property="balance" column="balance"/>
    <result property="overdraftDegrees" column="overdraft_degrees"/>
    </resultMap>
    <resultMap class="user" id="resultAllUser">
    <result property="id" column="id" />
    <result property="name" column="name" />
    <result property="email" column="email" />
    <result property="password" column="password" />
    <result property="account" column="id" resultMap="accountTest"/>
    <!-- 把要使用的字段值传过去 -->
    </resultMap><statement id="selectUserbyIdJoin" resultMap="resultAllUser">
    <![CDATA[   
      select u.*,a.* from table_ibatis_user u join table_ibatis_account a on u.id = a.user_id
      where u.id =#value#  
      ]]>  </statement>
      

  3.   

    resultAllUser  这个  resultMap  没有 class 
    并且  where u.id =#value#  
    没有 para
      

  4.   

    关键是读取配置文件时就错啦,两个resultMap能那样配置吗  请高手指教
      

  5.   

    <result property="account" column="id" resultMap="accountTest"/> 这句有错误吧.
    应该是
    <result property="account" column="id" select="select_account_Id"/>
    <select id="select_account_Id" parameterClass="java.lang.String" resultMap="accountTest">
        SELECT id,
                       cardType,
                       user_id,
                       balance,
                        overdraft_degrees            from
                    account表
                where accountId=#value#
    </select>
      

  6.   

    <result property="account" column="id" resultMap="accountTest"/>有误
      

  7.   

    result property="account" column="id" resultMap="accountTest"/>
    改为:
    <result property="account" column="id" select="selectUserbyIdJoin"/>