Compartir tecnología

Pregunta de entrevista 009-Java-MyBatis

2024-07-11

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Pregunta de entrevista 009-Java-MyBatis

Preguntas de autoevaluación

  • 1. ¿Qué es MyBatis? ¿En qué se diferencia de Hibernate?
  • 2. ¿Cuéntame sobre el proceso de ejecución de MyBatis?
  • 3. ¿MyBatis admite la carga diferida?
  • 4. ¿Cuál es la diferencia entre el caché de primer nivel y el caché de segundo nivel en MyBatis?
  • 5. ¿Qué es SQL dinámico en MyBatis?
  • 6. ¿Cómo implementar la paginación en MyBatis?
  • 7. ¿Cómo implementa MyBatis la inserción de datos a gran escala en la base de datos MySQL?
  • 8. ¿Entiendes MyBatis-Plus?

Pregunta respuesta

1. ¿Qué es MyBatis? ¿En qué se diferencia de Hibernate?

Respuesta: MyBatis es un marco de capa de persistencia semiautomático que puede escribir declaraciones SQL a través de XML o anotaciones y asignar declaraciones SQL a objetos Java. MyBatis no genera declaraciones SQL de forma completamente automática, pero permite a los desarrolladores escribir SQL manualmente, proporcionando así mayor flexibilidad y control.
Hibernate es un marco ORM completamente automático que puede generar automáticamente declaraciones SQL y proporcionar más funciones, pero su configuración también es relativamente compleja.

2. ¿Cuéntame sobre el proceso de ejecución de MyBatis?

Respuesta: El proceso de ejecución de MyBatis incluye varios pasos principales, desde la inicialización de la configuración hasta la ejecución de SQL y la devolución de resultados.El proceso detallado es el siguiente

  1. Cargue el archivo de configuración: registre el archivo de configuración (como mybatis-config.xml), que contiene información de conexión de la base de datos, ubicación del archivo de mapeo y otra información.
  2. Crear SqlSessionFactory: cree una instancia de SqlSessionFactory a través del constructor SqlSessionFactoryBuilder.
  3. Crear SqlSession: obtenga la instancia de SqlSession a través de SqlSessionFactory, que proporciona los métodos necesarios para ejecutar declaraciones SQL.
  4. Obtener Mapper: obtenga la instancia de Mapper específica a través de SqlSession.
  5. Ejecute SQL: llame al método de interfaz Mapper y MyBatis generará y ejecutará declaraciones SQL específicas basadas en la información de mapeo en el archivo de configuración.
  6. Procesamiento del conjunto de resultados: MyBatis asigna el conjunto de resultados devuelto por la base de datos a un objeto Java y lo devuelve a la persona que llama.
  7. Gestión de transacciones: si se configura un administrador de transacciones, SqlSession maneja el inicio, la confirmación o la reversión de las transacciones.
  8. Cerrar SqlSession: liberar recursos.
    // 1. 加载配置文件
    String resource = "mybatis-config.xml";
    InputStream inputStream = Resources.getResourceAsStream(resource);
    
    // 2. 创建SqlSessionFactory
    SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
    
    // 3. 创建SqlSession
    try (SqlSession session = sqlSessionFactory.openSession()) {
        
        // 4. 获取Mapper
        UserMapper mapper = session.getMapper(UserMapper.class);
    
        // 5. 执行SQL
        User user = mapper.selectUser(1);
    
        // 6. 处理结果集
        System.out.println(user);
    
        // 7. 管理事务(如果需要)
        session.commit();
    } catch (Exception e) {
        e.printStackTrace();
    } finally {
        // 8. 关闭SqlSession
        session.close();
    }