-
1 UserMapper userMapper = sqlSession.getMapper (UserMapper. Clase );
-
Lee el archivo de configuración generado objeto de configuración que contiene la fuente de datos, transacción, y el impacto de los recursos de archivos de base de datos asignador de propiedades de comportamiento Ajustes;
-
Mediante la lectura de objeto de configuración SqlSessionFactoryBuilder, generando un SqlSessionFactory ( modo de constructor );
1 pública SqlSessionFactory acumulación (Reader lector, el medio ambiente de cuerdas, propiedades Bien) { 2 var5 SqlSessionFactory; 3 try { 4 XMLConfigBuilder parser = nuevo XMLConfigBuilder (lector, el medio ambiente, las propiedades); 5 var5 = esta .build (parser.parse ()); 6 } catch (var14 Excepción) { 7 tiro ExceptionFactory.wrapException ( "SqlSession edificio de error." , Var14); 8 } finalmente { 9 ErrorContext.instance () reset ().; 10 11 intento{ 12 reader.Close (); 13 } catch (IOException Var13) { 14 } 15 16 } 17 18 retorno var5; 19 }
1 privada vacío bindMapperForNamespace () { 2 Cadena espacio de nombres = esta .builderAssistant.getCurrentNamespace (); 3 si (= espacio de nombres! Nula ) { 4 Clase boundType = nula ; 5 6 try { 7 boundType = Resources.classForName (espacio de nombres); 8 } catch (var4 ClassNotFoundException) { 9 } 10 11 si (boundType! = Nula &&! Este.configuration.hasMapper (boundType)) { 12 esta .configuration.addLoadedResource ( "espacio de nombres:" + espacio de nombres); 13 esta .configuration.addMapper (boundType); 14 } 15 } 16 17 }
1 pública SqlSessionFactory acumulación (config Configuración) { 2 retorno nueva DefaultSqlSessionFactory (config); 3 }
-
Cuando el método () llamando al método de aumento (), por bindMapperForNamespace clase XMLConfigBuilder, el registro de interfaz para un atributo de clase Mapper HashMap MapperRegistry, clave = Mapper.class, valor = Mapper creación de la fábrica actual;
-
SqlSession objeto de instancia generada (por SqlSessionFactory modo de fábrica );
-
sqlSession conseguir a través de método del objeto proxy (getMapper () modo proxy ), utilizando un proxy dinámico JDK, el proxy genera un objeto de destino objeto Mapper;
-
Por fábricas MapperProxyFactory, generar clase de proxy proxy dinámico es MapperProxy ( modo de fábrica ), para lograr la interfaz InvocationHandler a método de envasado invoke (), el método de la clase no-objeto se ha mejorado, envasados MapperMethod, y, finalmente, ejecutar ejecutar () se completa método sql CRUD.
pública objeto de invocación (objeto proxy, método, método, Object [] args) lanza la Throwable { try { // Si el método es un método de la clase Object, luego ejecutados directamente sin refuerzo; // significa que si realizamos es toString () método no requiere mejorada. IF (Object. Clase .equals (method.getDeclaringClass ())) { volver Method.invoke ( el este , args); } SI ( el este .isDefaultMethod (Método)) { regreso el este .invokeDefaultMethod (Proxy, método, args); } } la captura (Throwable var5) { de banda ExceptionUtil.unwrapThrowable (var5); } // caché cuando MapperMethod = mapperMethod la presente .cachedMapperMethod (Método); // realizar operaciones CRUD volver mapperMethod.execute ( el presente .sqlSession, args); }
-
fuente combinado mybatis de partida para hablar sobre el proceso de creación sqlSession y el uso de patrones de diseño
Supongo que te gusta
Origin www.cnblogs.com/weizaibug/p/12460925.html
Recomendado
Clasificación