Java Advanced conocimiento mybatis 31 (iBATIS) obras, procesos

1, el principio de funcionamiento, proceso  

    1, leído por el archivo de objeto mybatis.xml Reader (el nombre del archivo y la ruta se puede personalizar para poner la propuesta en el directorio src);
    2, crear un SqlSessionFactory objetos a través de objetos SqlSessionFactoryBuilder;
    3, obtener el objeto SqlSession del hilo actual;
    4, la operación se inicia (por defecto abierto automáticamente con MyBatis);
    5, la operación de lectura correspondiente a la XXXXXMapper.xml Identificación del archivo de asignación por el SqlSession, adquiriendo así instrucción SQL;
    6, confirmar la transacción (la CUD escribirá);
    7, SqlSession cerrada el objeto, el hilo con la corriente de separación de objetos SqlSession, GC para recuperar tan pronto como sea posible.

El siguiente código simple para explicar MyBatis obras, procesos (ver Notas):

Herramientas MyBatisUtils.java

1  públicas  de clase MyBatisUtils {
 2      privado  estáticas ThreadLocal <SqlSession> = ThreadLocal nueva ThreadLocal <SqlSession> ();
3      privada  estática SqlSessionFactory SqlSessionFactory;
4      
5      estática {
 6          try {
 7              // 1,读取配置mybatis.xml 
8              lector Lector = Resources.getResourceAsReader ( "mybatis.xml" );
9              // 2,创建SqlSessionFactory 
10              SqlSessionFactory = nuevo . SqlSessionFactoryBuilder () de construcción (lector);
. 11          } la captura (Excepción E) {
 12 es              e.fillInStackTrace ();
 13 es              de banda  nueva nuevo un RuntimeException (E);
 14          }
 15      }
 16      
. 17      privadas MyBatisUtils () {}
 18 es      
. 19      // . 3, la obtención de la SqlSession 
20 es      público  estática la SqlSession getSqlSession () {
 21 es          la SqlSession SqlSession = ThreadLocal.get ();
 22 es          SI (SqlSession == nula ) { // Si no obtener el anteriormente SqlSession, se obtendrá por la manera siguiente 
23 es              SqlSession =sqlSessionFactory.openSession ();
24          }
 25          de retorno sqlSession;
26      }
 27      
28      // 7,关闭SqlSession 
29      pública  estática  void closeSqlSession () {
 30          SqlSession sqlSession = threadLocal.get ();
31          si (! SqlSession = nula ) {
 32              sqlSession.close ();
33              threadLocal.remove ();
34          }
 35      }
 36 }

perfil núcleo mybatis.xml

1  <? xml version = "1.0" encoding = "UTF-8" ?> 
2  <! DOCTYPE configuración PÚBLICA "- // mybatis.org//DTD Config 3.0 // EN"
 3  "http://mybatis.org/dtd/mybatis-3-config.dtd" > 
4  < configuración > 
5      < entornos por defecto =" desarrollo" > 
6          < entorno ID = "desarrollo" > 
7              < transactionManager tipo = "JDBC"  /> 
8              < dataSource tipo = "POOLED"
                 Nombre = "conductor" valor = "oracle.jdbc.driver.OracleDriver"  /> 
10                  < propiedad nombre = "url" valor = "jdbc: oracle: thin: @localhost: 1521: shoreid"  /> 
11                  < propiedad nombre =" nombre de usuario" valor = "zhangsan"  /> 
12                  < propiedad nombre = "" contraseña valor = "123456"  /> 
13              </ dataSource > 
14          </ entorno > 
15      </ Entornos de > 
16  
17      <por cartógrafos > <! - 5, la operación de lectura correspondiente al XXXXXMapper.xml Identificación del archivo de asignación por The SqlSession, adquiriendo así la instrucción SQL;. -> 
18 es          < asignador de recursos = "COM / costa / Entidad / StudentMapper.xml" /> 
. 19      </ por mapeadores > 
20 es  </ Configuración >

capa DAO (StudentDAO)

1    // Consulta Todos (correspondiente a las operaciones de persistencia Hibernate) 
2    pública Lista <Student> el listAll () {
 3.        List <Student> Jefes = new new ArrayList <Estudiante> ();
 . 4        SqlSession sqlSession = MyBatisUtils.getSqlSession (); / / 3, la obtención de la SqlSession
 . 5        el try {
 6.            Bosses sqlSession.selectList = ( "student.selectAll" );
 . 7        } la captura (Excepción E) {
 8.            // sqlSession.rollback (); // rollback transacción ( consulta no presentado. no rollback)
 9           System.out.println ( "Error:" + e.getMessage ()); // Obtener la información de anomalía, a la estación de control de impresión 
10        } finally {
 11.            // sqlSession.commit (); // 6, confirmar la transacción (. Consulta no se requiere que presente, no rollback) 
12 es            MyBatisUtils.closeSqlSession (); // 7,. cerrar la SqlSession 
13 es        }
 14        de retorno Bosses;
 15    }

El proyecto es el código completo: https://www.cnblogs.com/dshore123/p/12463550.html

 

2, prestar atención a los detalles  

a, archivos mybatis.xml, se recomienda lo siguiente en src, el nombre del archivo puede ser personalizado.

b, XXXXMapper.xml archivo para poner la propuesta con los objetos bajo un mismo paquete, el nombre del archivo es generalmente "nombre del objeto Mapper.xml". Puede personalizar.

c, MyBatisUtils herramientas:
    1, el bloque de inicialización estática, archivo de configuración de MyBatis se carga y archivo XXXXMapper.xml (ejecutan una vez)
    2, el uso de objetos ThreadLocal, de modo que el hilo actual y objeto SqlSession unidos (ejecutan una vez)
    3, Obtiene el objeto SqlSession para el subproceso actual, si no, obtener el objeto SqlSession SqlSessionFactory del objeto
    4, obtiene el objeto SqlSession para el subproceso actual, apagarlo, liberando los recursos que ocupó.


 

 

 

 

 

Autor original: DSHORE

Inicio Autor: http://www.cnblogs.com/dshore123/

Desde el original: https://www.cnblogs.com/dshore123/p/12464563.html

Bienvenido reproducido, reimpreso, asegúrese de indicar la fuente. ( Si este artículo útil, puede hacer clic en la esquina inferior derecha de la recomendación o comentario, gracias! )

Supongo que te gusta

Origin www.cnblogs.com/dshore123/p/12464563.html
Recomendado
Clasificación