Обмен технологиями

Вопрос для интервью 009-Java-MyBatis

2024-07-11

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

Вопрос для интервью 009-Java-MyBatis

Вопросы для самопроверки

  • 1. Что такое MyBatis? Чем он отличается от Hibernate?
  • 2. Расскажите о процессе выполнения MyBatis?
  • 3. Поддерживает ли MyBatis отложенную загрузку?
  • 4. В чем разница между кешем первого уровня и кешем второго уровня в MyBatis?
  • 5. Что такое динамический SQL в MyBatis?
  • 6. Как реализовать пейджинг в MyBatis?
  • 7. Как MyBatis реализует крупномасштабную вставку данных в базу данных MySQL?
  • 8. Вы понимаете MyBatis-Plus?

Вопрос ответ

1. Что такое MyBatis? Чем он отличается от Hibernate?

Ответ: MyBatis — это полуавтоматическая платформа уровня персистентности, которая может записывать операторы SQL через XML или аннотации и сопоставлять операторы SQL с объектами Java. MyBatis не генерирует операторы SQL полностью автоматически, но позволяет разработчикам вручную писать SQL, обеспечивая тем самым большую гибкость и контроль.
Hibernate — это полностью автоматическая платформа ORM, которая может автоматически генерировать операторы SQL и предоставлять больше функций, но ее настройка также относительно сложна.

2. Расскажите о процессе выполнения MyBatis?

Ответ: Процесс выполнения MyBatis включает в себя несколько основных этапов: от инициализации конфигурации до выполнения SQL и возврата результатов.Подробный процесс выглядит следующим образом

  1. Загрузите файл конфигурации: запишите файл конфигурации (например, mybatis-config.xml), который содержит информацию о подключении к базе данных, расположение файла сопоставления и другую информацию.
  2. Создание SqlSessionFactory. Создайте экземпляр SqlSessionFactory с помощью конструктора SqlSessionFactoryBuilder.
  3. Создать SqlSession: получите экземпляр SqlSession через SqlSessionFactory, который предоставляет методы, необходимые для выполнения операторов SQL.
  4. Получить Mapper: получите конкретный экземпляр Mapper через SqlSession.
  5. Выполнение SQL: вызовите метод интерфейса Mapper, и MyBatis сгенерирует и выполнит определенные инструкции SQL на основе информации о сопоставлении в файле конфигурации.
  6. Обработка набора результатов: MyBatis отображает набор результатов, возвращаемый базой данных, в объект Java и возвращает его вызывающей стороне.
  7. Управление транзакциями. Если настроен диспетчер транзакций, SqlSession обрабатывает запуск, фиксацию или откат транзакций.
  8. Закройте SqlSession: освободите ресурсы.
    // 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();
    }