<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".
<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".
<!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>
并且 where u.id =#value#
没有 para
应该是
<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>
改为:
<result property="account" column="id" select="selectUserbyIdJoin"/>