¿Cómo logra mybatis la compatibilidad entre dos bases de datos?
Análisis del problema:
1. Resolver el problema de compatibilidad de múltiples bases de datos de ibatis es en realidad permitir que ibatis seleccione automáticamente los archivos de configuración sqlmap de diferentes bases de datos.
2. Abra el proyecto de código fuente de ibatis y realice un seguimiento del código, y finalmente ubique com.ibatis.sqlmap.engine.builder.xml.SqlMapConfigParser.java Todos los nodos sqlmap que se ejecutan en el sistema se cargan desde. Aquí convertido.
3. Obviamente, addSqlMapNodelets en el código fuente de SqlMapConfigParser es responsable de analizar la ruta "/sqlMapConfig/sqlMap", que es la ruta del archivo sqlmap.
4. Para lograr la "compatibilidad con múltiples bases de datos", el método se puede modificar aquí.
Solución:
1. Primero, agregamos un nuevo "DBProductName" en el nodo de configuración gt; Por supuesto, también se puede obtener a través de java.sql.DatabaseMetaData, pero esto depende demasiado del controlador jdbc y requiere una configuración manual del seguro.
2. Refactorice el método addSqlMapNodelets de SqlMapConfigParser.
" 1) La primera opción es obtener la ubicación de un único archivo sqlmap, como \XXX.xml en el directorio de inicio de sqlmap;
2) Obtener el tipo de base de datos según en el valor del atributo DBProductName establecido anteriormente;
3) Reubique la ruta del archivo del tipo de base de datos en tiempo de ejecución al archivo sqlmap. Por ejemplo, \mysql\XXX.xml en el directorio de inicio de sqlmap representa la base de datos msql. actualmente en ejecución en el programa y lo carga en el sistema el archivo sqlmap correspondiente a la base de datos mysql "
4. Bien, ahora ibatis admite la "compatibilidad con múltiples bases de datos" (ver el código fuente completo) (ver. el archivo adjunto para el código fuente completo).
Instrucciones de uso:
1. Compile SqlMapConfigParser.java para generar el archivo ejecutable SqlMapConfigParser.class (ver archivo adjunto) y agréguelo a ibatis.jar.
2. Agregue subdirectorios de soporte compatibles con múltiples bases de datos, como src\conf\mapping\mysql, src\conf\mapping\oracle, al directorio principal donde se almacena el archivo de configuración de sqlmap en el sistema. como src\conf\mapping espera.
3. Escriba archivos de configuración sqlmap de múltiples bases de datos de acuerdo con las necesidades reales del proyecto. Nota: Los diferentes tipos de bases de datos deben garantizar el mismo nombre de archivo de configuración de sqlmap y nombre de nodo de sql
4. En el archivo de configuración principal de ibatis (como sql-map-config.xml), especifica settingsgt; el programa actual para ejecutar el tipo de base de datos