실행 기간 동안 ibatis 프로필 에서 탭 에 있 는 sql 을 가 져 오 십시오.

1754 단어 DAOsql.netibatisBlog
ibatis 페이지 는 잘 사용 되 지 않 습 니 다. 데이터 베이스 물리 페이지 가 아니 라 수량 이 많 으 면 성능 이 떨 어 집 니 다. 따라서 특정한 데이터 베 이 스 를 바탕 으로 페이지 sql 포장 을 할 필요 가 있 습 니 다. 따라서 이러한 문제 가 발생 했 습 니 다. 즉, 코드 에서 지정 한 id 의 select 태그 에서 수 동적 인 조합 으로 매개 변수 자리 차지 자 (?) 를 얻 고 실제 실 행 된 sql 문 구 를 어떻게 가 져 옵 니까?
어제 코드 를 따라 왔어요. getSql MapClient Template 에서 ibatis 소스 코드 를 따라 왔어요.
몇 개의 관건 적 인 코드 를 찾 았 기 때문에 추출 하여 jpetstore 에서 시험 해 보 았 는데 실행 가능 하 다 는 것 을 발견 했다.
그래서 여러분 과 나 눠 보도 록 하 겠 습 니 다.
import com.ibatis.sqlmap.engine.impl.ExtendedSqlMapClient;
import com.ibatis.sqlmap.engine.impl.SqlMapExecutorDelegate;
import com.ibatis.sqlmap.engine.mapping.sql.Sql;
import com.ibatis.sqlmap.engine.mapping.statement.MappedStatement;

//SqlMapExecutorDelegate         ,             java    ,            ,  sql   ,      sql      ,      
SqlMapExecutorDelegate delegate=((ExtendedSqlMapClient)(getSqlMapClientTemplate().getSqlMapClient())).getDelegate();  
//         id  Statement  ,      getProduct         id 
MappedStatement ms = delegate.getMappedStatement("getProduct");
//sql       	Statement   sql     
Sql sql=ms.getSql();
//    getSql  ,         ,         productId,         select * from xxx where xx=? sql   ,    sql          sql             ,          com.ibatis.sqlmap.engine.scope.RequestScope,                ,         ,      sql          ,     null  ,       ,            .    RequestScope      ,          Statement
System.out.println(sql.getSql(null,productId) );

이상 의 예 코드 는 JPetstore 에서 바 뀌 었 습 니 다.
Sql MapClient Dao Support 에서 계승 하 는 추상 적 인 종 류 를 다시 쓰 고 이 추출 sql 기능 을 기본 적 인 방법 으로 작성 하여 구체 적 인 업무 dao 류 를 사용 하도록 하 는 것 을 권장 합 니 다.

좋은 웹페이지 즐겨찾기