Es ist zu heiß! Warum ist MyBatis Plus so großartig?

  • Eigenschaften

  • Text

  • Komponentenabhängigkeit

  • Erweiterungscode

Jeder, der MyBatis-Plus (kurz MP) verwendet hat, weiß, dass es sich um ein Verbesserungstool für MyBatis handelt. Es dient der Verbesserung von MyBatis ohne Änderungen. Es wurde entwickelt, um die Entwicklung zu vereinfachen und die Effizienz zu verbessern.

Eigenschaften

  • Kein Eingriff: Nehmen Sie nur Verbesserungen vor, ohne Änderungen vorzunehmen. Die Einführung wirkt sich nicht auf das vorhandene Projekt aus. Es ist glatt wie Seide

  • Geringer Verlust: Basis-CURD wird beim Start automatisch injiziert, Leistung ist im Grunde kein Verlust, direkter objektorientierter Betrieb

  • Leistungsstarke CRUD-Operation: Integrierter allgemeiner Mapper und allgemeiner Service, nur eine geringe Menge an Konfiguration kann die meisten CRUD-Operationen einer einzelnen Tabelle realisieren, und ein leistungsfähigerer Bedingungsgenerator, der verschiedene Anforderungen erfüllen und ein 272-seitiges MybatisPDF-Dokument organisieren kann

  • Unterstützung des Lambda-Formularaufrufs: Über Lambda-Ausdrücke können Sie bequem verschiedene Abfragebedingungen schreiben, ohne sich Gedanken über das Schreiben falscher Felder machen zu müssen

  • Unterstützt die automatische Generierung von Primärschlüsseln: Unterstützt bis zu 4 Primärschlüsselstrategien (enthält eine verteilte eindeutige ID-Generator-Sequenz), die frei konfiguriert werden können, um Primärschlüsselprobleme perfekt zu lösen

  • ActiveRecord-Modus unterstützen: Unterstützt ActiveRecord-Formularaufruf. Entitätsklassen müssen nur die Modellklasse erben, um leistungsstarke CRUD-Operationen auszuführen

  • Unterstützung von benutzerdefinierten globalen allgemeinen Operationen: Unterstützung der globalen allgemeinen Methodeninjektion (einmal schreiben, überall verwenden)

  • Integrierter Codegenerator: Verwenden Sie Code oder Maven-Plug-In, um schnell Mapper-, Modell-, Service-, Controller-Layer-Code, Support-Template-Engine und weitere benutzerdefinierte Konfigurationen zu generieren

  • Integriertes Paging-Plug-In: Basierend auf dem physischen Paging von MyBatis müssen sich Entwickler nicht um bestimmte Vorgänge kümmern. Nach dem Konfigurieren des Plug-Ins entspricht das Schreiben von Paging einer normalen Listenabfrage

  • Das Paging-Plug-In unterstützt mehrere Datenbanken: Unterstützt MySQL, MariaDB, Oracle, DB2, H2, HSQL, SQLite, Postgre, SQLServer und andere Datenbanken

  • Integriertes Plug-in für die Leistungsanalyse: Die SQL-Anweisung und ihre Ausführungszeit können ausgegeben werden. Es wird empfohlen, diese Funktion während der Entwicklung und des Testens zu aktivieren, um langsame Abfragen schnell zu erkennen

  • Integriertes globales Abhör-Plug-In: Bietet eine vollständige Analyse und Blockierung des Lösch- und Aktualisierungsvorgangs für Tabellen und kann Abfangregeln anpassen, um Fehlbedienungen zu vermeiden

Text

In der eigentlichen Projektentwicklung müssen wir Daten häufig stapelweise in der Datenbank speichern. Haben Sie dies mit mybatis-plus mehr oder weniger realisiert?

Komponentenabhängigkeit

Zuerst müssen wir die Open-Source-Komponente mybatis-plus über Maven einführen und der Datei pom.xml den folgenden Code hinzufügen:

<!--mybatis-->
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.4.0</version>
</dependency>
<!--mybatis plus extension,包含了mybatis plus core-->
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-extension</artifactId>
    <version>3.4.0</version>
</dependency>

Beim Anzeigen des Quellcodes fand ich die von der API-Schnittstelle bereitgestellte Batch-Einfüge-Schnittstelle:

Es ist zu heiß!  Warum ist MyBatis Plus so großartig?
Verwenden Sie nach dem Starten des Dienstes Postman zum Debuggen. Der Hintergrunddruck lautet wie folgt:

Es ist zu heiß!  Warum ist MyBatis Plus so großartig?

Aus der Abbildung ist ersichtlich, dass diese sogenannte Batch-Insertion-Schnittstelle tatsächlich eine For-Loop-Insertion ist. Oh, mein Gott! Ist einfach ein Albtraum.

Es ist schwierig, manuell zu implementieren.

INSERT INTO test (a, b, c) VALUES
<foreach collection="list" item="item" separator=",">
    (#{item.a}, #{item.b}, #{item.c})
</foreach>

Wir lesen den Quellcode von mybatis-plus. Im Paket com.baomidou.mybatisplus.extension.injector.methods.InsertBatchSomeColumn gibt es tatsächlich eine Implementierung des Batch-Einfügecodes. Ich werde den Quellcode hier nicht veröffentlichen, und Sie werden ihn selbst befolgen. Lassen Sie uns ihn manuell erweitern ein bisschen:

Erweiterungscode

Sprechen ist billig, zeigen Sie mir den Code. Zeigen Sie zuerst den Code. Dann zeige ich Ihnen langsam, warum dies getan wird:

Es ist zu heiß!  Warum ist MyBatis Plus so großartig?

Injizieren Sie die Bean in die MybatisPlusConfig-Datei. Der Code lautet wie folgt:

@Configuration
public class MybatisPlusConfig {

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

    @Bean
    public EasySqlInjector easySqlInjector() {
        return new EasySqlInjector();
    }
}

Erweitern Sie auch den integrierten BaseMapper. Der Code lautet wie folgt:

import com.baomidou.mybatisplus.core.mapper.BaseMapper;

import java.util.Collection;

/**
 * 扩展通用 Mapper,支持数据批量插入
 *
 * @author 天开易想
 */
public interface EasyBaseMapper<T> extends BaseMapper<T> {

    /**
     * 批量插入 仅适用于mysql
     *
     * @param entityList 实体列表
     * @return 影响行数
     */
    Integer insertBatchSomeColumn(Collection<T> entityList);
}

Wir können die folgenden Referenzen in der Business Class implementieren. Der Code lautet wie folgt:

/**
 * 定义业务mapper接口,继承刚刚扩展的EasyBaseMapper
 *
 * @author 天开易想
 */
@Mapper
public interface TestMapper extends EasyBaseMapper<Test> {
}

/**
 * 业务实现类接口,即可引用
 *
 * @author 天开易想
 */
@Service
public class TestServiceImpl extends ServiceImpl<TestMapper, Test> implements TestService {

    @Override
    public Integer testBatch(Collection<Test> testList) {
        return baseMapper.insertBatchSomeColumn(testList);
    }

Da es nicht direkt in BaseMapper zitiert werden kann, warum kann es nicht direkt zitiert werden? Es wird gesagt, dass es nur die MySQL-Datenbank unterstützt, sodass der Autor keinen eingebauten Grund hat. Ich habe ein 272-seitiges MybatisPDF-Dokument kompiliert.

Ich denke du magst

Origin blog.51cto.com/14975073/2590388
Empfohlen
Rangfolge