2
我們密集使用iBatis + Spring。我們從數據庫中獲取的所有內容均通過存儲過程獲取。在解決問題時,我們想知道發送給執行的SP和SP名稱的確切參數。目前我們通過調試代碼來做到這一點(這很痛苦)。我們想添加一些記錄到iBatis,以便輸出SP +參數值的名稱。我們使用log4j,以下是我們的iBatis結構。如何在iBatis ORM中登錄
映射:
<procedure id="getReportData" parameterMap="getReportDataCall">
{call get_rpt (?,?,?,?)}
</procedure>
<parameterMap id="getReportDataCall" class="map">
<parameter property="type" jdbcType="String" javaType="java.lang.String" mode="IN"/>
<parameter property="month" jdbcType="Int" javaType="java.lang.Integer" mode="IN"/>
<parameter property="Result0" jdbcType="ORACLECURSOR" javaType="java.sql.ResultSet" mode="OUT" resultMap="result1"/>
<parameter property="Result1" jdbcType="ORACLECURSOR" javaType="java.sql.ResultSet" mode="OUT" resultMap="result2"/>
</parameterMap>
<resultMap id="select-first-result-hq" class="VO">
<result property="column1" column="columna"/>
<result property="column2" column="columnb"/>
</resultMap
從DAO
HashMap parm = new HashMap();
parm.put("type", type_val);
parm.put("month", month_val);
getSqlMapClientTemplate().queryForList("mymappingName.getReportData", parm);
調用iBatis的正如你所看到的參數只是在HashMap
。我可以創建一個我自己的類+方法,它將HashMap
和過程名稱作爲參數,並將hashmap的所有鍵/值對和過程名稱打印到日誌中。但是,如果我這樣做......在打電話給SP之前,我必須將此呼叫添加到所有DAO的呼叫中。
有沒有更簡單的解決方案呢?那會避免我再次觸摸我的所有代碼?
嗯不要我需要添加log.debug(「....」)這個工作? – Omnipresent 2010-03-08 16:01:17
編號調試語句已存在於java.sql。*類中。您只需配置Log4J或任何您用於記錄的內容,以便爲這些類使用DEBUG。 – digitalsanctum 2010-03-09 18:16:40