-
1 UserMapper userMapper = sqlSession.getMapper (UserMapper. 클래스 );
-
데이터 소스, 트랜잭션 및 데이터베이스 파일 자원의 영향을 포함하는 구성 객체 생성 된 구성 파일이 행동 특성 설정을 매퍼 읽어;
-
SqlSessionFactory는 (생성 SqlSessionFactoryBuilder를 구성 객체를 판독함으로써 빌더 모드 );
1 공공 SqlSessionFactory는 빌드 (리더 리더, 문자열 환경 속성 속성) { 2 SqlSessionFactory는 VAR5; 3 시도는 { 4 XMLConfigBuilder 파서 = 새로운 XMLConfigBuilder (리더 환경 특성); 5 VAR5가 = 이 .build을 (parser.parse ()); 6 } 캐치 (예외 var14) { 7 던져 ExceptionFactory.wrapException ( "오류 건물 SQLSESSION." , var14); 8 } 마지막 { 9 ErrorContext.instance () (리셋).; (10) (11) 시도{ 12 reader.close (); 13 } 캐치 (IOException이 된 var13) { 14 } 15 16 } 17 18 복귀 VAR5; 19 }
1 개인 공극 bindMapperForNamespace () { 2 스트링 네임 스페이스 = 이 .builderAssistant.getCurrentNamespace (); 3 의 경우 (네임 스페이스 =! 널 (null) ) { 4 급 boundType = 널 (null) ; 5 6 시도 { 7 boundType = Resources.classForName (공간); 8 } 캐치 (의 ClassNotFoundException var4) { 9 } (10) (11) 의 경우 (boundType! = null의 &&! 이.configuration.hasMapper (boundType)) { 12 이 .configuration.addLoadedResource ( "네임 스페이스 :"+ 공간); 13 이 .configuration.addMapper (boundType); 14 } 15 } 16 17 }
1 공공 SqlSessionFactory는 빌드 (구성 설정) { 이 반환 새로운 DefaultSqlSessionFactory (구성); 3 }
-
() 메소드 XMLConfigBuilder 클래스 bindMapperForNamespace하여 빌드 () 메소드를 호출 할 때, 매퍼의 HashMap MapperRegistry 클래스 속성 = Mapper.class 키, 값 = 매퍼 현재 공장 만드는 인터페이스 레지스터;
-
SQLSESSION 인스턴스 객체 (SqlSessionFactory는에 의해 생성 된 공장 모드 );
-
SQLSESSION GET getMapper () 프록시 객체 (방법 통해 프록시 모드 JDK가 다이나믹 프록시를 사용), 프록시는 대상체 매퍼 객체를 생성하고,
-
MapperProxyFactory 공장으로 동적 프록시 프록시 클래스 MapperProxy (generate를 팩토리 모드 ) () ()를 호출 포장 방법에의 InvocationHandler 인터페이스를 달성하기 위해, 비 객체 클래스의 메소드 MapperMethod 포장 강화, 최종적 실행을 실행 한 SQL CRUD 방법이 완료된다.
공공 객체를 호출 (객체 프록시 방법, 방법, 개체 []에 args)이 발생 Throwable의 { 은 try { // 방법은 다음 직접 보강없이 실행 Object 클래스의 방법 인 경우; // 우리가 수행하는 경우가 toString 것을 수단 () 방법은 개선 할 필요가 없습니다. IF (. 개체 클래스 .equals (method.getDeclaringClass ())) { 반환 Method.invoke를 ( 다음은이 , 인수); } 경우 ( 이 .isDefaultMethod (법)) { 반환 이 .invokeDefaultMethod를 (프록시 방법에 args); } } 캐치 (Throwable를 VAR5) { 던져 ExceptionUtil.unwrapThrowable (VAR5를); } // 않는 캐시 MapperMethod = mapperMethod 이 본 .cachedMapperMethod (방법); // CRUD 연산 수행 복귀 mapperMethod.execute ( 이 본 .sqlSession, 인수)를; }
-
에서 결합의 MyBatis 소스는 SQLSESSION 작성 프로세스 및 디자인 패턴의 사용에 대해 이야기하기
추천
출처www.cnblogs.com/weizaibug/p/12460925.html
추천
행