Spring Boot (8): Инструмент улучшения Mybatis MyBatis-Plus

Spring Boot

1. Введение

в предыдущей статье«Spring Boot (7): минималистская конфигурация Mybatis»В этой статье мы представили базовое использование Mybatis в Spring Boot, Некоторая ложка дегтя в том, что сам Mybatis не предоставляет функцию подкачки, и нам нужно добавить ее вручную.PageHelperПлагины или инструменты, которые реализуют пейджинг сами по себе и не подходят для операций с одной таблицей. Простые вставка, обновление, удаление также требуют от нас добавления операторов SQL. В текущем режиме микросервисной архитектуры каждый сервис имеет свой отдельный. Будет больше и другие сценарии использования для баз данных и отдельных таблиц, а использование Mybatis, несомненно, приведет к большому количеству повторяющейся работы.

В этом контексте появился Mybatis Plus.MyBatis-Plus (сокращенно MP) — это инструмент расширения для MyBatis. Он только расширяет, а не изменяет на основе MyBatis, и создан для упрощения разработки и повышения эффективности. Видение команды открытого исходного кода для этого проекта с открытым исходным кодом выглядит следующим образом:

зрение

Наше видение — стать лучшим партнером MyBatis, как и 1P и 2P в Contra, с основными друзьями, эффективность удваивается.

2. Особенности

  • Неинвазивность: делайте только улучшения без изменений, их внедрение не повлияет на существующие проекты, гладко как шелк.
  • Низкие потери: базовый CURD автоматически вводится при запуске, производительность практически без потерь и прямая объектно-ориентированная операция.
  • Мощные операции CRUD: встроенный общий сопоставитель и общая служба, большинство операций CRUD для одной таблицы можно реализовать с небольшой настройкой и более мощными условными конструкторами для удовлетворения различных потребностей использования.
  • Поддержка вызова лямбда-форм: с помощью лямбда-выражений вы можете легко написать различные условия запроса, и вам не нужно беспокоиться о написании неправильных полей.
  • Поддерживает автоматическую генерацию первичного ключа: поддерживает до 4 стратегий первичного ключа (включая распределенный генератор уникальных идентификаторов — Sequence), которые можно свободно настроить для идеального решения проблемы первичного ключа.
  • Поддержка режима ActiveRecord: поддержка вызова формы ActiveRecord, класс сущностей может выполнять мощные операции CRUD только путем наследования класса Model.
  • Поддержка настраиваемых глобальных общих операций: поддержка внедрения глобального общего метода (запись один раз, использование в любом месте)
  • Встроенный генератор кода: используйте код или подключаемый модуль Maven для быстрого создания кода уровня Mapper, Model, Service, Controller, механизма поддержки шаблонов и других настраиваемых конфигураций, ожидающих вашего использования.
  • Встроенный плагин пейджинга: на основе физического пейджинга MyBatis разработчикам не нужно заботиться о конкретных операциях.После настройки плагина запись пейджинга эквивалентна обычному запросу списка.
  • Плагин подкачки поддерживает несколько баз данных: MySQL, MariaDB, Oracle, DB2, H2, HSQL, SQLite, Postgre, SQLServer2005, SQLServer и другие базы данных.
  • Встроенный плагин анализа производительности: может выводить Sql-операторы и время их выполнения.Рекомендуется включать эту функцию во время разработки и тестирования, что позволяет быстро выявлять медленные запросы
  • Встроенный подключаемый модуль глобального перехвата: обеспечивает интеллектуальный анализ и блокировку операций удаления и обновления для всей таблицы, а также может настраивать правила перехвата для предотвращения ошибочных операций.

Mybatis-Plus сравнил Mybatis с лучшей поддержкой операций, связанных с одной таблицей, и напрямую поддерживает функцию подкачки страниц, а также присоединился к серии, вносящей свой вклад в разработку подключаемых модулей, соответствующие подробности рекомендуем вам посетить официальный сайт, чтобы получить читателей: https: // mybatis.plus/руководство/. В следующей таблице представлена ​​одна операция Mybatis-Plus и плагины для анализа SQL.

3. Инженерная практика

3.1 Зависимость проекта pom.xml выглядит следующим образом:

Листинг кода: spring-boot-mybatis-plus/pom.xml***

<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.2.0</version>
</dependency>

<!-- https://mvnrepository.com/artifact/p6spy/p6spy -->
<dependency>
    <groupId>p6spy</groupId>
    <artifactId>p6spy</artifactId>
    <version>3.8.6</version>
</dependency>

  • mybatis-plus-boot-starter является обязательной зависимостью mybatis-plus
  • p6spy выводит зависимости для SQL-анализа, если вам это не нужно, вы можете ввести mybatis-plus-boot-starter отдельно.

3.2 Конфигурация

Конфигурационный файл application.yml выглядит следующим образом:

Листинг кода: spring-boot-mybatis-plus/src/main/resources/application.yml***

server:
  port: 8080
spring:
  application:
    name: spring-boot-mybatis-xml
  datasource:
    url: jdbc:p6spy:mysql://172.16.96.112:3306/test?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=UTF-8&useSSL=false
    username: root
    password: 123456
    driver-class-name: com.p6spy.engine.spy.P6SpyDriver
    type: com.zaxxer.hikari.HikariDataSource
    hikari:
      auto-commit: true
      minimum-idle: 2
      idle-timeout: 60000
      connection-timeout: 30000
      max-lifetime: 1800000
      pool-name: DatebookHikariCP
      maximum-pool-size: 5
# 配置slq打印日志
mybatis-plus:
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

Уведомление: Включите печать анализа SQL mybatis-plus.

  • необходимо настроитьmybatis-plus.configuration.log-impl.
  • Изменить настройкуspring.datasource.driver-class-nameзаcom.p6spy.engine.spy.P6SpyDriver, эта конфигурация использует класс драйвера, предоставленный p6spy.
  • Префикс URL-адреса — jdbc:p6spy, за которым следует двоеточие для соответствующего адреса подключения к базе данных.
  • Этот плагин имеет потерю производительности и не рекомендуется для производственных сред.
  • Также необходимо добавить spy.properties следующим образом:

Листинг кода: spring-boot-mybatis-plus/src/main/resources/spy.properties***

module.log=com.p6spy.engine.logging.P6LogFactory,com.p6spy.engine.outage.P6OutageFactory
# 自定义日志打印
logMessageFormat=com.baomidou.mybatisplus.extension.p6spy.P6SpyLogger
#日志输出到控制台
appender=com.baomidou.mybatisplus.extension.p6spy.StdoutLogger
# 使用日志系统记录 sql
#appender=com.p6spy.engine.spy.appender.Slf4JLogger
# 设置 p6spy driver 代理
deregisterdrivers=true
# 取消JDBC URL前缀
useprefix=true
# 配置记录 Log 例外,可去掉的结果集有error,info,batch,debug,statement,commit,rollback,result,resultset.
excludecategories=info,debug,result,batch,resultset
# 日期格式
dateformat=yyyy-MM-dd HH:mm:ss
# 实际驱动可多个
#driverlist=org.h2.Driver
# 是否开启慢SQL记录
outagedetection=true
# 慢SQL记录标准 2 秒
outagedetectioninterval=2

3.3 Класс картографа

Листинг кода: spring-boot-mybatis-plus/src/main/java/com/springboot/springbootmybatisplus/mapper/UserMapper.java***

public interface UserMapper extends BaseMapper<User> {
}

Здесь нам нужно только наследовать BaseMapper.BaseMapper предоставляет нам множество операций с одной таблицей.Для конкретных операций вы можете просмотреть исходный код.com.baomidou.mybatisplus.core.mapper.BaseMapper, который очень хорошо прокомментирован.

3.4 Класс обслуживания

В дополнение к базовому классу Mapper, Mybatis-Plus также предоставляет нам IService.Общая служба CRUD инкапсулирует интерфейс IService и далее инкапсулирует CRUD.Используйте get для запроса одной строки, удаления списка, запроса, сбора, страницы, пейджинга, метода именования префикса. чтобы различать слой Mapper, чтобы избежать путаницы. И официально предлагается, если есть возможность настроить общий метод службы, создайте собственный IBaseService, чтобы наследовать базовый класс, предоставляемый Mybatis-Plus.

Код UserService.java выглядит следующим образом:

Листинг кода: spring-boot-mybatis-plus/src/main/java/com/springboot/springbootmybatisplus/service/UserService.java***

public interface UserService extends IService<User> {
}

Код UserServiceImpl.java выглядит следующим образом;

Листинг кода: spring-boot-mybatis-plus/src/main/java/com/springboot/springbootmybatisplus/service/impl/UserServiceImpl.java***

@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {
}

Контроллер тестов был создан для соответствующего тестового кода, который здесь не указан.Читатели, которым он нужен, могут посетить репозиторий кода Github, чтобы получить его самостоятельно.

3.5 Класс конфигурации пейджинга

Листинг кода: spring-boot-mybatis-plus/src/main/java/com/springboot/springbootmybatisplus/config/MybatisPlusConfig.java***

@Configuration
public class MybatisPlusConfig {

    /**
     * 注册分页插件
     * @return
     */
    @Bean
    public PaginationInterceptor paginationInterceptor(){
        return  new PaginationInterceptor();
    }

}

4. Тест

После запуска проекта откройте браузер, чтобы посетить: http://localhost:8080/findPage, вы можете увидеть, что json возвращается нормально, как показано ниже:

{
    "records":[
        {
            "id":"a0ac692d-e1f1-11e9-9a69-0242ac110002",
            "nickName":"geekdigging.com",
            "age":108,
            "createDate":"2019-09-28T13:12:31.000+0000"
        },
        {
            "id":"b9168576-e1f1-11e9-9a69-0242ac110002",
            "nickName":"www.geekdigging.com",
            "age":18,
            "createDate":"2019-09-28T13:13:12.000+0000"
        }
    ],
    "total":2,
    "size":5,
    "current":1,
    "orders":[

    ],
    "searchCount":true,
    "pages":1
}

В это время мы проверяем журнал консоли и видим соответствующие журналы анализа SQL следующим образом:

Из журнала мы можем четко видеть текущий процесс выполнения журнала, что выполняется первым, а что затем, и сколько времени затрачено, что помогает нам анализировать производительность SQL и знать, какой SQL занимает много времени. .

5. Резюме

Общее использование Mybatis-Plus относительно простое, Mybatis поддерживает использование Mybatis-Plus, но исходный файл конфигурации в application.ymlmybatis.***необходимо заменить наmybatis-plus.***, и усиливает недостатки оригинальной однотабличной операции Mybatis.Для официального заявления: только улучшения и никаких изменений, он был создан для упрощения разработки и повышения эффективности. Я думаю, что это очень уместно. В этой статье представлены только некоторые основные способы использования Mybatis-Plus.В дополнение к расширенным функциям, таким как работа с одной таблицей, пейджинг и анализ SQL, официальный также предоставляет множество полезных плагинов, таких как: горячая загрузка, логическое удаление, Инжектор SQL, парсер блока атаки SQL и другие функции, при необходимости читатели и друзья могут посетить официальную документацию, чтобы забрать ее.

5. Пример кода

Пример кода — Гитхаб

Пример кода — Gitee

6. Ссылка

"Официальная документация Mybatis-Plus"

Если моя статья была вам полезна, отсканируйте код и подпишитесь на официальный аккаунт автора: Получите последние новости о галантерейных товарах :)