fuente combinado mybatis de partida para hablar sobre el proceso de creación sqlSession y el uso de patrones de diseño

  1. De acuerdo con esta línea de código, fuente mybatis combinado de la cual hablar de proceso de creación sqlSession y el uso de patrones de diseño:

    1 UserMapper userMapper = sqlSession.getMapper (UserMapper. Clase );
    1. 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;

    2. 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   }
    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;

    4. SqlSession objeto de instancia generada (por SqlSessionFactory modo de fábrica );

    5. 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;

    6. 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); 
       }

Supongo que te gusta

Origin www.cnblogs.com/weizaibug/p/12460925.html
Recomendado
Clasificación