말할 것도없이, 소스 코드 학습의 이점은 규모가 작고 논리가 간단하므로 학습 할 일련의 기사를 쓸 것입니다.
sqlsession
MyBatis 사용 포털은 org.apache.ibatis.session 패키지의 SQLSESSION에 있습니다. 인터페이스 인 것으로 밝혀졌으며 org.apache.ibatis.session.defaults 패키지에 기본 구현 클래스 defaultsqlsession이 있어야합니다. 우리는이 수업을 새로운 적이 없으며 Java 컨벤션에 따르면 공장 방법을 SQLSESSIONFACTORY에서 사용합니다. 또한 인터페이스라는 것을 알았으므로 기본 구현 클래스 defaultsqlsessionFactory가 있어야합니다. 이 클래스는 여전히 자체적으로 만들 필요가 없으며 SQLSESSIONFACTORYBUILDER의 공장 메소드를 사용합니다.
defaultsqlsession
defaultsqlsession의 주요 방법 :
1) Cursor <T> selectCursor (문자열 문, 객체 매개 변수, 행 바운드 행
2) List <e> selectList (문자열 문, 객체 매개 변수, 행 바운드 행 바운드) 및 void Select (문자열 문, 객체 매개 변수, RowBounds Rowbounds, Resulthandler handler) 및 executor.query (MS, rapcollection (매개 변수), 행 바운드, 핸들러에 대표합니다.
3) int update (문자열 문, 객체 매개 변수), executor.update (ms, wrapcollection (매개 변수)) 대의원.
결국 그것을 완료 할 집행자가 있음을 알 수 있습니다.
집행자
집행자는 org.apache.ibatis.executor 패키지에 있습니다. 인터페이스입니다. 구현 클래스는 Basexecutor 및 CachingExecutor입니다. 그중에서도 Bainxecutor는 추상적이며 3 개의 서브 클래스 Simple -Executor, Reuseexecutor 및 Batchexecutor가 있습니다. 이름을보고 의미를 알고 있습니다. Baseexecutor의 주요 방법 :
1) List <E> 쿼리 (MappedStatement MS, Object Parameter, RowBounds Rowbounds, Resulthandler, Cachekey Key, BoundSQL BoundSQL) 및 List <E> QueryFromDatabase (MappedStatement MS, Object Parameter, Rowbounds Rowbounds, ResulThandler resulthler, Cachekey Key) Abstract <e> list <e> doquery (Mappedstatement MS, Object Parameter, Rowbounds Rowbounds, Resulthandler resulthandler, boundsql boundsql).
2) Cursor <E> QueryCursor (MappedStatement MS, Object Parameter, RowBounds Rowbounds), Abstract <E> Cursor <E> DoQueryCursor (MappedStatement MS, Object Parameter, RowBounds Rowbounds, BoundSQL BoundSQL)로 위임되었습니다.
3) int 업데이트 (MappedStatement MS, Object Parameter), INT DOUPDATE (MAPPEDSTATEMENT MS, OBJECT 매개 변수)로 대표합니다.
기본 클래스는 공개 부분을 처리하여 서브 클래스 구현에 남겨 둡니다.
SimpleExecutor의 주요 방법을 살펴 보겠습니다.
1) List <E> doQuery (MappedStatement MS, Object Parameter, Rowbounds Rowbounds, Resulthandler resulthandler, BoundSQL BoundSQL), 핸들러에 위임된다. <e> 쿼리 (STMT, RESULTHANDLER).
2) Cursor <E> doQueryCursor (MappedStatement MS, Object Parameter, RowBounds Rowbounds, BoundSQL BoundSQL), 핸들러에 위탁. <e> QueryCursor (STMT).
3) int doupdate (Mappedstatement MS, Object Parameter), Delegate to Handler.Update (STMT).
마침내 핸들러가 처리한다는 것을 알 수 있습니다.
Statementhandler
Statementhandler는 org.apache.ibatis.executor.statement 패키지에 있습니다. 인터페이스입니다. 구현 클래스는 BasestatementHandler 및 RoutingStatementHandler입니다. BasestatementHandler는 추상적이며 3 개의 서브 클래스 SimplestatementHandler, PreparedStatementHandler 및 CallableStatementHandler가 있습니다. 이 세 가지는 익숙해야하며 매개 변수, 매개 변수화 된 SQL 문 및 저장 절차없이 SQL 문을 처리해야합니다. SimplestatementHandler의 주요 방법을 살펴 보겠습니다.
1) List <E> Query (명세서 명령문, resulthandler resulthandler), 명령문 대표 .Execute (SQL).
2) Cursor <e> QueryCursor (stration stret), 명령문을 맡기십시오. Execute (SQL).
3) int update (strate stret), 명령문을 맡기십시오. Execute (SQL).
마지막으로 SQL은 명세서에 의해 실행됩니다. 이것은 java.sql 패키지로 돌아갑니다.
MyBatis는 주로 SQL 매개 변수의 캡슐화 처리를 완료하고 결과 세트를 얻고 개체를 생성하며 SQL 문의 구성 프로세스를 사용자에게 둡니다. Mybatis의 저자는 이런 식으로 디자인했습니다. 프레임 워크는 전반적으로 반자동이지만 유연성이 크게 증가했습니다.