mybatis 소개
Mybatis는 Apache의 오픈 소스 프로젝트입니다. 2010 년 에이 프로젝트는 Apache Software Foundation에서 Google 코드로 이전되었으며 Mybatis로 이름이 바뀌 었습니다. 일반 SQL 쿼리, 저장 프로 시저 및 고급 매핑에 대한 우수한 지속성 계층 프레임 워크를 지원합니다. MyBatis는 거의 모든 JDBC 코드 및 매개 변수의 수동 설정을 제거하고 결과 세트를 검색합니다. MyBatis는 단순한 XML 또는 주석을 사용하여 구성 및 원래 매핑을 위해 인터페이스 및 Java의 Pojos (일반 Old Java Objects)를 데이터베이스의 레코드로 맵핑합니다.
Mybatis 인터셉터 소개
Mybatis는 플러그인 기능을 제공합니다. 플러그인이라고하지만 실제로는 인터셉터 기능입니다. MyBatis를 사용하면 매핑 된 문을 실행하는 동안 특정 지점에서 통화를 가로 채 릴 수 있습니다. MyBatis는 인터셉터 인터페이스를 제공합니다.이 인터페이스를 구현하여 자체 인터셉터를 정의 할 수 있습니다.
mybatis는 기본적으로 네 가지 유형의 방법을 호출합니다.
1.Executor (업데이트, 쿼리, 플러시 스테이트, 커밋, 롤백, GetTransaction, Close, Isclose)
2. ParameterAndler (getParameterObject, setParameters)
3. resultsethandler (handleresultsets, handleoutputparameters)
4. StatementHandler (준비, 매개 변수화, 배치, 업데이트, 쿼리)
위 4는 모두 구성 방법입니다. 이 방법은 mybatis (추가, 삭제, 수정 및 쿼리)의 작동에서 실행됩니다. 실행 순서는 Executor, ParameterAndler, ResultesThandler 및 StateHandler입니다.
인터페이스의 정의는 다음과 같습니다.
이 세 가지 방법 중에서 플러그인은 프로세서 구성에 사용되며 인터셉트는 프록시 클래스를 처리하는 데 사용되며 SetProperties 용어 인터셉터 속성 설정.
플러그인 클래스는 InvocationHandler 인터페이스를 구현하고 JDK의 자체 동적 프록시 클래스를 반환합니다. 플러그인의 랩 방법 :
현재 대상 객체에 인터셉트 해야하는 인터페이스가 있는지 여부를 결정하십시오. 그렇지 않은 경우 대상 객체 자체를 반환하고 있으면 프록시 객체를 반환합니다.
프록시 오브젝트의 호출 핸들러는 플러그인입니다. 대상 객체가 인터페이스 메소드를 실행하면 프록시 오브젝트를 통해 실행되면 invoctionhandler의 호출 메소드가 호출됩니다. 이는 플러그인의 호출 메소드입니다.
현재 실행 된 방법이 가로 채기가 필요한 정의 된 메소드 인 경우, 대상 객체, 실행 방법 및 메소드 매개 변수가 호출 객체로 캡슐화되고 캡슐화 된 호출은 현재 인터셉터의 인터셉트 메소드로 매개 변수로 전달됩니다. 인터셉트 할 필요가 없으면 현재 방법을 직접 호출합니다.
getSignaturemap 메소드
getSignaturemap은 먼저 인터셉트의 인터셉트 주석을 가져 와서이를 유형 속성을 가져 오기 위해 트래버스 한 다음이 유형을 기반으로 메소드 속성 및 Args 속성으로 메소드를 얻고 결국 유형 키 및 값 세트 <메소드>가있는 맵을 반환합니다. 예 : Executor.class의 업데이트 방법 필터링 클래스는 executro로서 키를 생성하고 메소드 인스턴스로서 값을 생성하며 매핑 확장 및 메소드 메소드에 해당하는 매개 변수가 있습니다.
인터셉터 구성 가능성 :