Базовые знания о серии фреймворков MyBatis

Java база данных MyBatis SQL

1. Что такое MyBatis

MyBatis изначально был проектом с открытым исходным кодом apache, iBatis, а позже был переименован в MyBatis, Это отличная структура уровня сохраняемости, которая инкапсулирует процесс работы с базой данных в jdbc, так что разработчикам нужно только уделять внимание самому SQL, не тратя энергию. Например, регистрация драйвера, создание соединения, создание оператора, ручная установка параметров, получение набора результатов и т. д. Код сложного процесса jdbc.

Mybatis настраивает различные операторы для выполнения (оператор, PrepareStatemnt, CallableStatement) через xml или аннотации и генерирует окончательный исполняемый оператор sql, сопоставляя объект Java и sql в операторе, и, наконец, среда Mybatis выполняет sql и генерирует результат Сопоставление с объектом Java и возврат.

2. Детали архитектуры MyBatis

(1) Конфигурационный файл MyBatis:

SqlMapConfig.xml: как глобальный файл конфигурации MyBatis, этот файл настраивает операционную среду и другую информацию MyBatis.

mapper.xml: файл сопоставления sql, в котором настраиваются операторы sql для работы с базой данных. Этот файл необходимо загрузить в SqlMapConfig.xml.

(2) Создайте SqlSessionFactory через среду MyBatis и другую информацию о конфигурации, то есть фабрику сеансов.

(3) sqlSession создается фабрикой сеансов, то есть сеансом, и операции с базой данных необходимо выполнять через sqlSession.

(4) Нижний уровень MyBatis настраивает интерфейс исполнителя Executor для работы с базой данных.Интерфейс Executor имеет две реализации: один является базовым исполнителем, а другой - исполнителем кэша.

(5) Mapped Statement — это базовый объект инкапсуляции MyBatis, который упаковывает информацию о конфигурации MyBatis и информацию о сопоставлении sql. SQL-запрос в файле mapper.xml соответствует объекту оператора Mapped, а идентификатор sql — это идентификатор оператора Mapped.

(6) Сопоставленный оператор определяет входные параметры выполнения sql, включая HashMap, базовый тип, pojo, а Executor сопоставляет входные объекты Java с sql через сопоставленный оператор перед выполнением sql, Отображение входных параметров — это набор параметров для подготовленного статемента в программировании jdbc. .

(7) Сопоставленный оператор определяет выходные результаты выполнения sql, включая HashMap, базовые типы и pojo. Исполнитель сопоставляет выходные результаты с объектами Java после выполнения sql с помощью сопоставленного оператора. Процесс сопоставления выходных результатов эквивалентен сопоставлению результатов в программировании jdbc.Процесс синтаксического анализа.

3. Краткое изложение традиционных проблем программирования JDBC

(1) Этапы программирования JDBC

1) Загрузите драйвер базы данных

2) Создать и получить ссылку на базу данных

3) Создайте объекты JDBCStement

4) Установите оператор sql

5) Установите параметры в операторе sql (используя подготовленный статемент)

6) Выполнить sql через оператор и получить результат

7) Разобрать результат выполнения sql

8) Ресурсы освобождения (результат, подготовленный оператор, соединение)

(2) Пример программы JDBC

public class Test { 
  public static void main(String[] args) {
        Connection connection = null;
        PreparedStatement preparedStatement = null;
        ResultSet resultSet = null;

        try {
            // 加载数据库驱动
            Class.forName("com.mysql.jdbc.Driver");

            // 通过驱动管理类获取数据库链接
            connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf-8", "root", "root");
            // 定义sql语句 ?表示占位符
            String sql = "select * from user where username = ?";
            // 获取预处理statement
            preparedStatement = connection.prepareStatement(sql);
            // 设置参数,第一个参数为sql语句中参数的序号(从1开始),第二个参数为设置的参数值
            preparedStatement.setString(1, "王五");
            // 向数据库发出sql执行查询,查询出结果集
            resultSet = preparedStatement.executeQuery();
            // 遍历查询结果集
            while (resultSet.next()) {
                System.out.println(resultSet.getString("id") + "  " + resultSet.getString("username"));
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            // 释放资源
            if (resultSet != null) {
                try {
                    resultSet.close();
                } catch (SQLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
            if (preparedStatement != null) {
                try {
                    preparedStatement.close();
                } catch (SQLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
            if (connection != null) {
                try {
                    connection.close();
                } catch (SQLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        }
      }
}

(3) Сводка традиционных проблем программы JDBC

1) Частое создание и освобождение соединений с базой данных приводит к пустой трате системных ресурсов, что влияет на производительность системы. Эту проблему можно решить, используя пул соединений с базой данных.

2) Оператор sql жестко закодирован в коде, что затрудняет его обслуживание.В практических приложениях sql может сильно измениться, а изменение sql требует изменения кода Java.

3) Существует жесткое кодирование в использовании подготовленногоСтатента для передачи параметров символу занятости, потому что условие where оператора sql не обязательно, их может быть больше или меньше, и код необходимо изменить, чтобы изменить sql, и система не проста в обслуживании.

4) Существует жесткое кодирование (имя столбца запроса) для синтаксического анализа набора результатов. Изменения SQL приводят к изменениям в коде синтаксического анализа, и система не проста в обслуживании. Удобнее инкапсулировать записи базы данных в объекты pojo для синтаксического анализа.

4. Вводный пример MyBatis: поскольку импортировать программы разработки пакетов jar довольно проблематично, следующие фреймворки и программы проектов используют инструменты Maven для управления проектами, поэтому вводная программа будет заново объяснена после обновления следующей серии статей Maven.

Отсканируйте код и подпишитесь на общедоступную учетную запись WeChat, чтобы узнать больше.