이 기사는 이전에 sqlsessionfactorybean의 재구성을 기반으로 했으므로 내가 한 작업을 간략하게 검토하겠습니다.
새 sqlsessionfactorybean을 만들고 초기 코드는 Mybatis-Spring과 동일합니다.
refactor refactor buildSqlSessionFactory () 메소드를, 수많은 IF 문을 작은 메소드 세트로 추출하고, 사용자 지정 구성 메소드를 예약하고, 일반적인 속성 Getter 메소드를 추가하십시오.
구성 요소 팩토리 인터페이스를 추출하고 구성 요소 생성 도구 클래스 SQLSESSSIONCOPONETFACTORYS를 제공합니다. 이는 구성 요소 교체를 용이하게하기 위해 다른 장소에 흩어져있는 새로운 XXX ()를 중앙에 관리합니다.
이제 확장 방법을 살펴 보겠습니다. 먼저 SchemasqlSessionFactoryBean을 작성하고 refactored sqlsessionFactoryBean을 상속하고 XML 구성에서 새로 생성 된 클래스와 동기화하십시오.
공개 클래스 스키드 스케일 스션 팩토리 비안은 sqlsessionfactorybean {}을 확장합니다.기본 결과 유형 설정 및 지정된 유형 약어를 스캔하는 것과 같은 간단한 기능 확장의 경우 여기에서 많이 논의하지 않습니다. 여기서는 XSD를 사용하여 SQLMAPPER의 구성을 확인하기 위해 확장 방법에 중점을 둘 것입니다.
1. sqlsessionfactorybean에서 doparsesqlmapperresource () 메소드를 덮어 씁니다. 이 메소드의 기능은 sqlmapper 구성 파일을 구문 분석하는 것입니다.
물론 호환성을 위해서는 먼저 DTD인지 결정해야합니다. DTD 인 경우 원래 방법에 따라 분석하고 사용자 정의 방법에 따라 분석하십시오.
패키지 org.dysd.dao.mybatis.schema; import org.apache.ibatis.executor.errorcontext; import org.apache.session.session.configuration; import org.springframework.core.nestedioexception; import org.springframework.core.resource; org.springframework.util.xml.xmlvalidationmodedetector; public class schemasqlsessionfactorybean sqlsessionfactorybean {@overrideprotected void doparseqlmapperresource (구성 구성, 리소스 mapperlocation) 중첩 모드 {int mode vocception = detectValidationMode (mapperLocation); if (mode == xmlValidationModeTector.validation_dtd) {// dtd 인 경우 mybatis 공식 구문 분석 super.doparsesqlmapperResource (구성, mapperlocation); this.doparsesqlmapperresourcewithschema (configuration, mapperlocation);} catch (예외 e) { "새로운 NestedioException ("새로운 NestedioException ( "새로운 NestedioException : ' + mapperlocation +"' ", e);}}}}}}}}}}}}}}}}}} doparsesqlmapperresourcewithschema (구성 구성, 자원 mapperlocation) {} private int detectValidationMode (resource mapperLocation) 던지기 NestEdioException {int mode = -1; try {xmlValidationModedEtector = xmlValidationModedEtector = new XMLValidationModeTector (); detector.detectValidationMode (mapperLocation.getInputStream ());} catch (예외 e) {Throw New NestEdioException ( "New NestEdioException (" " + MappperLocation +" ", e);} {errureContext.instance (); reteet ()}}}}}}}}}}}}}여기서 XML 구성 파일의 확인 모드를 감지하기 위해 봄에 XMLValidationModeTector를 빌려줍니다. 논리적으로 간단합니다. 한 줄을 하나씩 읽으십시오. 텍스트가 시작되기 전에 DTD 정의가 있음을 발견하면 DTD 모드를 반환합니다. 그렇지 않으면 XSD 모드를 반환합니다 (실제로 감지 모드는 스프링을 빌릴뿐만 아니라 그 뒤에있는 사용자 정의 네임 스페이스도 스프링을 빌립니다).
이 시점에서 SQLMAPPER 구성 파일의 구문 분석은 두 개의 분기로 나뉘어졌으며,이 분기는 MyBatis의 공식 구문 분석과 호환되며 XSD 모드의 구문 분석은 doparsesqlMapperResourceWithSchema ()로 탐색됩니다.
2. SQLMAPPER의 확인을 위해 XSD 파일 작성 (XSD에 대한 기본 지식이 필요합니다.이 블로그의 XML 부분의 연구 노트를 참조하십시오).
1. 먼저 XML 도구를 사용하여 MyBatis의 DTD 파일을 원본 XSD 파일로 변환하십시오. 이 기능을 갖춘 많은 XML 도구가 있습니다. 온라인으로 검색 할 수 있습니다.
다음은 세 가지 수준입니다.
(1) 루트 요소 (Mapper 요소) : sqlmapper 파일에 해당하는 경우 자식 요소의 논리적 분류를 나타내는 네임 스페이스 속성이 있습니다. 여기의 네임 스페이스 속성은 XML 네임 스페이스와 다릅니다. 전자는 mybatis 자체의 논리적 분류이며, 후자는 XML 파일에 나타날 수있는 XML 요소와 속성 제약 조건을 정의하는 데 사용됩니다.
(2) 첫 번째 수준의 자식 요소 (캐시 | 캐시 -ref | resultMap | ParametErmap | SQL | 삽입 | 업데이트 | 삭제 | 선택) : 맵퍼의 첫 번째 수준의 자식 요소. Mybatis 프레임 워크는 1 단계 아동 요소의 처리가 다르기 때문에 별도의 수준으로 사용됩니다. 주로 점검 명령문을 추가, 삭제 및 변경하기 때문에 명령문 수준 명령문 요소라고합니다.
(3) 기타 요소 (SQL 구성 텍스트, | 트림 | 트림 | 어디서 | foreach | 선택 | if) SQL 스크립트를 구성하는 데 사용되는 텍스트, 스크립트 레벨 스크립트 요소라고하는 동적 스크립트 요소를 구성하는 데 사용됩니다.
2. XSD 파일 생성을 기반으로 다음 수정을 만듭니다.
(1) 다음과 같은 네임 스페이스 추가.
<? xml version = "1.0"encoding = "utf-8"standalone = "no"?> <xsd : schema xmlns = "http://dysd.org/schema/sqlmapper"targetnamespace = "http://dysd.org/schema/sqlmapper"xmlns : xsd = "http://ww.w.w3.org/2001/xmlschema"rementformdefault = "1.0 버전 ="
(2) 첫 번째 레벨 요소를 요소 그룹 명령문 그룹에 패키지
(3) 다른 네임 스페이스의 요소가 나타나도록 맵퍼 요소를 수정하십시오.
(4) 동적 스크립트 요소를 요소 그룹 DynaScriptGroup으로 포장하고 다른 이름의 요소가 나타나도록 허용
(5) DynaScriptGroup을 사용하여 <select> 요소와 같은 동적 스크립트 요소가 나타나는 위치를 대체합니다.
(6) StateType에서 열거 유형으로 취할 수있는 세 가지 값 문, 준비 및 호출 가능과 같은 다른 최적화 :
<xsd : simpleType name = "stationtype"> <xsd : 제한 base = "xsd : token"> <xsd : enumeration value = "statement" /> <xsd : "준비" /> <xsd : enumeration value = "callable" /> < /xsd : simpletyd : simplethethe
비슷한 것은 parametermode, jdbctype, javatype 등을 포함합니다.
위는 mybatis를 확인하기 위해 XSD에서 사용한 sqlmapper 구성 파일의 요약입니다. 모든 사람에게 도움이되기를 바랍니다. 궁금한 점이 있으면 메시지를 남겨 주시면 편집자가 제 시간에 모든 사람에게 답장을 드리겠습니다. Wulin.com 웹 사이트를 지원해 주셔서 대단히 감사합니다!