ibatis 多表关联查询的问题,请大家来看下,谢谢
池彩虹 2008-06-23 05:51:23 -------sqlMap-----------
<!-- account表中带有List类型的role即角色编号-->
<sqlMap>
<resultMap id="account" class="com.uucun.csjexam.entity.Account" >
<result property="id" column="ID" />
<result property="userName" column="USERNAME" />
<result property="loginIp" column="LOGINIP" />
<result property="loginDate" column="LOGINDATE" />
<result property="role" select="getRole" column="ROLE_ID" />
</resultMap>
<resultMap id="role" class="com.uucun.csjexam.entity.Role">
<result property="id" column="ID" />
<result property="role" column="ROLE"/>
</resultMap>
<!-- 获取帐户总量 -->
<select id="getAccountCount" resultClass="java.lang.Integer">
SELECT COUNT(*) C FROM TBL_CSJ_ACCOUNT
<dynamic prepend="WHERE">
<isNotEmpty prepend="AND" property="id"> ID = #id# </isNotEmpty>
</dynamic>
</select>
<!-- 获取角色真实名 -->
<select id="getRole" parameterClass="int" resultMap="role">
SELECT
ROLE
FROM TBL_CSJ_ROLE WHERE ID=#value#
</select>
<!-- 获取帐户信息 -->
<select id="listSplitAccount" parameterClass="java.util.Map" resultMap="account">
SELECT * FROM
( SELECT A.*, ROWNUM R FROM
( SELECT
ID,
USERNAME,
LOGINIP,
LOGINDATE,
ROLE_ID
FROM TBL_CSJ_ACCOUNT
<dynamic prepend="WHERE">
<isNotEmpty prepend="AND" property="id">ID=#id#</isNotEmpty>
</dynamic>
) A
<![CDATA[
WHERE ROWNUM <= #end# ) B
WHERE R > #start#
]]>
</select>
</sqlMap>
我在运行listSplitAccount时候,返回的日志如下:
2008-06-23 17:36:17,418 DEBUG [java.sql.Connection] http-9000-Processor25 com.ibatis.common.logging.jakarta.JakartaCommonsLoggingImpl.debug(JakartaCommonsLoggingImpl.java:27) - <{conn-100000} Connection>
2008-06-23 17:36:17,496 DEBUG [java.sql.Connection] http-9000-Processor25 com.ibatis.common.logging.jakarta.JakartaCommonsLoggingImpl.debug(JakartaCommonsLoggingImpl.java:27) - <{conn-100000} Preparing Statement: SELECT COUNT(*) C FROM TBL_CSJ_ACCOUNT >
2008-06-23 17:36:18,387 DEBUG [java.sql.PreparedStatement] http-9000-Processor25 com.ibatis.common.logging.jakarta.JakartaCommonsLoggingImpl.debug(JakartaCommonsLoggingImpl.java:27) - <{pstm-100001} Executing Statement: SELECT COUNT(*) C FROM TBL_CSJ_ACCOUNT >
2008-06-23 17:36:18,387 DEBUG [java.sql.PreparedStatement] http-9000-Processor25 com.ibatis.common.logging.jakarta.JakartaCommonsLoggingImpl.debug(JakartaCommonsLoggingImpl.java:27) - <{pstm-100001} Parameters: []>
2008-06-23 17:36:18,387 DEBUG [java.sql.PreparedStatement] http-9000-Processor25 com.ibatis.common.logging.jakarta.JakartaCommonsLoggingImpl.debug(JakartaCommonsLoggingImpl.java:27) - <{pstm-100001} Types: []>
2008-06-23 17:36:18,449 DEBUG [java.sql.ResultSet] http-9000-Processor25 com.ibatis.common.logging.jakarta.JakartaCommonsLoggingImpl.debug(JakartaCommonsLoggingImpl.java:27) - <{rset-100002} ResultSet>
2008-06-23 17:36:18,543 DEBUG [java.sql.ResultSet] http-9000-Processor25 com.ibatis.common.logging.jakarta.JakartaCommonsLoggingImpl.debug(JakartaCommonsLoggingImpl.java:27) - <{rset-100002} Header: [C]>
2008-06-23 17:36:18,543 DEBUG [java.sql.ResultSet] http-9000-Processor25 com.ibatis.common.logging.jakarta.JakartaCommonsLoggingImpl.debug(JakartaCommonsLoggingImpl.java:27) - <{rset-100002} Result: [1]>
2008-06-23 17:36:18,715 DEBUG [java.sql.Connection] http-9000-Processor25 com.ibatis.common.logging.jakarta.JakartaCommonsLoggingImpl.debug(JakartaCommonsLoggingImpl.java:27) - <{conn-100003} Connection>
2008-06-23 17:36:18,715 DEBUG [java.sql.Connection] http-9000-Processor25 com.ibatis.common.logging.jakarta.JakartaCommonsLoggingImpl.debug(JakartaCommonsLoggingImpl.java:27) - <{conn-100003} Preparing Statement: SELECT * FROM ( SELECT A.*, ROWNUM R FROM ( SELECT ID, USERNAME, LOGINIP, LOGINDATE, ROLE_ID FROM TBL_CSJ_ACCOUNT ) A WHERE ROWNUM <= ? ) B WHERE R > ? >
2008-06-23 17:36:18,715 DEBUG [java.sql.PreparedStatement] http-9000-Processor25 com.ibatis.common.logging.jakarta.JakartaCommonsLoggingImpl.debug(JakartaCommonsLoggingImpl.java:27) - <{pstm-100004} Executing Statement: SELECT * FROM ( SELECT A.*, ROWNUM R FROM ( SELECT ID, USERNAME, LOGINIP, LOGINDATE, ROLE_ID FROM TBL_CSJ_ACCOUNT ) A WHERE ROWNUM <= ? ) B WHERE R > ? >
2008-06-23 17:36:18,731 DEBUG [java.sql.PreparedStatement] http-9000-Processor25 com.ibatis.common.logging.jakarta.JakartaCommonsLoggingImpl.debug(JakartaCommonsLoggingImpl.java:27) - <{pstm-100004} Parameters: [1, 0]>
2008-06-23 17:36:18,746 DEBUG [java.sql.PreparedStatement] http-9000-Processor25 com.ibatis.common.logging.jakarta.JakartaCommonsLoggingImpl.debug(JakartaCommonsLoggingImpl.java:27) - <{pstm-100004} Types: [java.lang.Integer, java.lang.Integer]>
2008-06-23 17:36:18,762 DEBUG [java.sql.ResultSet] http-9000-Processor25 com.ibatis.common.logging.jakarta.JakartaCommonsLoggingImpl.debug(JakartaCommonsLoggingImpl.java:27) - <{rset-100005} ResultSet>
2008-06-23 17:36:18,793 DEBUG [java.sql.ResultSet] http-9000-Processor25 com.ibatis.common.logging.jakarta.JakartaCommonsLoggingImpl.debug(JakartaCommonsLoggingImpl.java:27) - <{rset-100005} Header: [ID, USERNAME, LOGINIP, LOGINDATE, ROLE_ID]>
2008-06-23 17:36:18,793 DEBUG [java.sql.ResultSet] http-9000-Processor25 com.ibatis.common.logging.jakarta.JakartaCommonsLoggingImpl.debug(JakartaCommonsLoggingImpl.java:27) - <{rset-100005} Result: [10001, tracyjoy, 127.0.0.1, 2008-06-23 00:00:00.0, 10002]>
根本没有运行关联表查询,请问这是什么回事谢谢。
<result property="role" select="getRole" column="ROLE_ID" />这句相当于没有任何作用。