Ibatis resultmapとselectフィールドのいくらの問題
2376 ワード
以下:resultMap
select文は次のとおりです.
つまりselectにDEFAULT_がないSYSTEM_コードフィールドが出てきて、運転中にエラーが発生します
つまりSELECTで検出されたフィールド数はresultMapの数以上である
このように注意してください.元に書いたresultMapとselectが1つずつ対応している場合は、メンテナンス時に元のresultMapに直接フィールドを追加しないほうがいいです.複数のselect文がこのresultMapを参照している可能性があるからです.
最善の方法はresultMapを書いて上のresultMapから継承し、selectを書くことです.
<resultMap id="userResult" class="com.eclink.uc.user.vo.UserVO" >
<result column="USER_ID" property="userId" jdbcType="NUMBER" nullValue="0" />
<result column="LOGIN_NAME" property="loginName" jdbcType="VARCHAR" nullValue=""/>
<result column="REAL_NAME" property="realName" jdbcType="VARCHAR" nullValue=""/>
<result column="STATUS" property="status" jdbcType="VARCHAR" nullValue=""/>
<result column="TELEPHONE" property="telephone" jdbcType="VARCHAR" nullValue=""/>
<result column="EMAIL" property="email" jdbcType="VARCHAR" nullValue=""/>
<result column="CREATE_DATE" property="createDate" jdbcType="TIMESTAMP" nullValue="" />
<result column="SEX" property="sex" jdbcType="TIMESTAMP" nullValue="" />
<result column="MOBILE" property="mobile" jdbcType="TIMESTAMP" nullValue="" />
<result column="DEFAULT_ORG_ID" property="defaultOrgId" jdbcType="NUMBER" nullValue="0" />
<result column="DEFAULT_SYSTEM_CODE" property="defaultSystemCode" jdbcType="VARCHAR" nullValue="" />
</resultMap>
select文は次のとおりです.
<select id="getUserById" resultMap="userResult" parameterClass="int">
<![CDATA[ select to_char(create_date,'YYYY-MM-DD') as CREATE_DATE,STATUS,REAL_NAME,LOGIN_NAME,CREATE_USER,USER_ID,SEX,TELEPHONE,MOBILE,EMAIL,to_char(last_update_date,'YYYY-MM-DD') as LAST_UPDATE_DATE,DEFAULT_ORG_ID from UC_USER where USER_ID = #userId:NUMBER# ]]>
</select>
つまりselectにDEFAULT_がないSYSTEM_コードフィールドが出てきて、運転中にエラーが発生します
つまりSELECTで検出されたフィールド数はresultMapの数以上である
このように注意してください.元に書いたresultMapとselectが1つずつ対応している場合は、メンテナンス時に元のresultMapに直接フィールドを追加しないほうがいいです.複数のselect文がこのresultMapを参照している可能性があるからです.
最善の方法はresultMapを書いて上のresultMapから継承し、selectを書くことです.