중화사전망 - 자전 검색 - Mybatis 는 두 데이터베이스와 어떻게 호환됩니까?

Mybatis 는 두 데이터베이스와 어떻게 호환됩니까?

방법: 시스템 실행 중 서로 다른 데이터베이스 유형에 따라 서로 다른 파일 경로에 있는 sqlmap 구성을 로드합니다. 개발자가 해야 할 일은 멀티데이터베이스 호환성을 위해 머리를 쥐어짜는 것이 아니라 원본 데이터베이스 문을 즐겁게 작성하는 것이다. (알버트 아인슈타인, Northern Exposure (미국 TV 드라마), 예술명언)

문제 분석:

1. ibatis 다중 데이터베이스 호환성 문제를 해결하기 위해 ibatis 는 실제로 다른 데이터베이스의 sqlmap 구성 파일을 자동으로 선택할 수 있습니다.

2. ibatis 소스 코드 프로젝트를 열고 코드를 추적하여 com 에서 찾습니다. Ibatis.sqlmap.engine.builder.xml.sqlmapconfigparser.java. 시스템에서 실행 중인 모든 sqlmap 노드가 여기에서 균일하게 변환 및 로드됩니다.

3. 분명히 SqlMapConfigParser 소스 코드의 addSqlMapNodelets 는' /sqlMapConfig/sqlMap' 경로, 즉 sqlMap 파일 경로를 구문 분석합니다.

4.' 다중 데이터베이스 호환성' 을 실현하려면 여기서 이 방법을 변환하기만 하면 됩니다.

솔루션:

1, 우선 우리가 있습니다

2. SqlMapConfigParser 용 addSqlMapNodelets 메소드를 재구성합니다.

"1) 단일 sqlmap 파일 위치 (예: sqlmap 홈 디렉토리 ₩ xxx.xml) 를 가져오는 것이 좋습니다

2) 위에서 설정한 DBProductName 속성 값에 따라 데이터베이스 유형을 가져옵니다.

3) sqlmap 의 파일 경로를 실행 중인 데이터베이스 유형 파일로 재배치합니다. 예를 들어 sqlmap 홈 디렉토리 ₩ \mysql\XXX.xml 은 프로그램이 현재 msql 데이터베이스에서 실행 중이며 시스템의 MySQL 데이터베이스에 해당하는 sqlmap 파일이 로드되었음을 나타냅니다. ""

이제 ibatis 는 "다중 데이터베이스 호환성" 을 지원합니다 (전체 소스 코드는 첨부 파일 참조).

사용 방법:

1. SqlMapConfigParser.class 에서 생성된 실행 파일 SqlMapConfigParser.class (첨부 참조) 를 컴파일하고 덮어쓰기 파일을 ibatis.jar 에 추가합니다

2. 스토리지 시스템 sqlmap 구성 파일의 홈 디렉토리에 다중 데이터베이스 호환 지원 하위 디렉토리 (예: src\conf\mapping (예: src \ conf \ mapping \ MySQL, src \ conf \) 를 추가합니다

3. 실제 프로젝트 요구에 따라 복수 데이터베이스 sqlmap 프로파일을 작성합니다. 주: 데이터베이스 유형에 따라 sqlmap 구성 파일 이름과 SQL 노드 이름이 같은지 확인해야 합니다.

4. ibatis 마스터 구성 파일 (예: sql-map-config.xml) 에서 "setting & gt 는 현재 프로그램이 실행 중인 데이터베이스 유형을 지정합니다.