iBatis + Spring을 집중적으로 사용합니다. 우리가 DB에서 얻는 모든 것은 저장 프로 시저를 통해 가져온다. 때때로 문제를 해결할 때 실행 된 SP 및 SP 이름으로 전송 된 정확한 매개 변수를 알고 싶습니다. 현재 우리는 코드를 디버깅하여이를 수행합니다 (통증). iBatis에 일종의 로깅을 추가하여 SP + 매개 변수 값의 이름을 인쇄합니다. 우리는 log4j를 사용하고 다음은 우리의 iBatis 구조입니다. 이 매개 변수가 단지 HashMap
에 보듯이 DAO로그인하는 방법 iBatis ORM
HashMap parm = new HashMap();
parm.put("type", type_val);
parm.put("month", month_val);
getSqlMapClientTemplate().queryForList("mymappingName.getReportData", parm);
에서 iBatis를 호출
<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
:
매핑. HashMap
과 프로 시저 이름을 매개 변수로 취하고 hashmap의 모든 키/값 쌍과 로그에 프로 시저 이름을 인쇄하는 클래스 + 메서드를 만들 수 있습니다. 그러나, 내가 이것을한다면 ... SP에 전화하기 전에 모든 DAO에 그 전화를 추가해야 할 것입니다.
더 간단한 해결책이 있습니까? 그게 내 모든 코드를 다시 만지는 것을 피할 수 있을까?
hmm이 작업을 수행하려면 log.debug ("....")를 추가해야합니까? – Omnipresent
아니요. 디버그 문은 java.sql. * 클래스에 이미 있습니다. Log4J를 구성하거나 로깅에 사용하는 클래스에 대해 DEBUG를 사용하기 만하면됩니다. – digitalsanctum