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 и другие функции, при необходимости читатели и друзья могут посетить официальную документацию, чтобы забрать ее.