Compartilhamento de tecnologia

Pergunta da entrevista 009-Java-MyBatis

2024-07-11

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

Pergunta da entrevista 009-Java-MyBatis

Perguntas de autoteste

  • 1. O que é MyBatis? Como é diferente do Hibernate?
  • 2. Conte-me sobre o processo de execução do MyBatis?
  • 3. O MyBatis suporta carregamento lento?
  • 4. Qual é a diferença entre o cache de primeiro nível e o cache de segundo nível no MyBatis?
  • 5. O que é SQL dinâmico no MyBatis?
  • 6. Como implementar a paginação no MyBatis?
  • 7. Como o MyBatis implementa a inserção de dados em larga escala no banco de dados MySQL?
  • 8. Você entende o MyBatis-Plus?

Resposta da questão

1. O que é MyBatis? Como é diferente do Hibernate?

Resposta: MyBatis é uma estrutura de camada de persistência semiautomática que pode escrever instruções SQL por meio de XML ou anotações e mapear instruções SQL para objetos Java. MyBatis não gera instruções SQL de forma totalmente automática, mas permite que os desenvolvedores escrevam SQL manualmente, proporcionando assim maior flexibilidade e controle.
Hibernate é uma estrutura ORM totalmente automática que pode gerar instruções SQL automaticamente e fornecer mais funções, mas sua configuração também é relativamente complexa.

2. Conte-me sobre o processo de execução do MyBatis?

Resposta: O processo de execução do MyBatis inclui várias etapas principais, desde a inicialização da configuração até a execução do SQL e o retorno dos resultados.O processo detalhado é o seguinte

  1. Carregue o arquivo de configuração: registre o arquivo de configuração (como mybatis-config.xml), que contém informações de conexão com o banco de dados, localização do arquivo de mapeamento e outras informações.
  2. Criar SqlSessionFactory: Crie uma instância de SqlSessionFactory por meio do construtor SqlSessionFactoryBuilder.
  3. Criar SqlSession: Obtenha a instância SqlSession por meio de SqlSessionFactory, que fornece os métodos necessários para executar instruções SQL.
  4. Obter Mapper: Obtenha a instância específica do Mapper por meio de SqlSession.
  5. Execute SQL: Chame o método de interface Mapper e MyBatis gera e executa instruções SQL específicas com base nas informações de mapeamento no arquivo de configuração.
  6. Processando o conjunto de resultados: MyBatis mapeia o conjunto de resultados retornado pelo banco de dados em um objeto Java e o retorna ao chamador.
  7. Gerenciamento de transações: se um gerenciador de transações estiver configurado, o SqlSession trata do início, confirmação ou reversão de transações.
  8. Fechar 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();
    }