MyBatis-Plus (kurz MP) ist ein MyBatis-Verbesserungstool. Basierend auf MyBatis verbessert es sich nur und ändert sich nicht und wird geboren, um die Entwicklung zu vereinfachen und die Effizienz zu verbessern.
Chinesisches Dokument: http://baomidou.oschina.io/mybatis-plus-doc/#/
In diesem Artikel wird vorgestellt
1) Wie man es baut
2) Codegenerierung (Controller, Service, Mapper, XML)
3) Die CRUD-, DORTELALE -UND -PAGING -BASE -Klassen einer einzelnen Tabelle wurden für Sie durchgeführt
1. wie man es baut
1. Zuerst erstellen wir ein Springboot -Projekt -> https://start.spring.io/
2. Abhängigkeit von Maven
<dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>2.3</version> </dependency> <!-- velocity dependency for code generation --> <dependency> <groupId>org.apache.velocity</groupId> <artifactId>velocity-engine-core</artifactId> <version> 2.0 </Version> </abhängig>
3. Konfiguration (weil ich der Meinung bin, dass es zu wortreich ist, wird die Konfiguration der Datenquelle hier weggelassen)
application.Properties
mybatis-plus.mapper-locations = classPath: /mapper/* mapper.xmlmybatis-plus.typealiaspackage=com.taven.web.spingbootmp.entityMybatis-plus.global-conFig.id-type=3mybatis-plus.globograD-Type=3Mybatis-plus.glogrlobin-Config-type=3mybatis-Plus.glogrobal --type=3mybatis-Plus.glogrlobin --Typ. egy=2mybatis-plus.global-config.db-column-underline=truemybatis-plus.global-config.key-generator=com.baomidou.mybatisplus.incrementer.OracleKeyGeneratormybatis-plus.global-config.logic-delete-value=1 mybatis-plus.global-config.logic-not-delete-value = 0mybatis-plus.global-config.sql-Injektor = com.baomidou.mybatiSplus.mapper.logicsqinjector#Dies muss zu Ihrer Klasse geändert werden. .taven.web.springbootmp.mymetaobjecthandLermybatis-plus.Configuration.Map-abercore-to-Camel-Case = TrueMyBatis-Plus.configuration
Konfigurationsklasse MyBatiSplusConfig
import org.mybatis.spring.annotation.mapperscan; import org.springframework.context.annotation.bean; com.baomidou.mybatisplus.incrementer.ikeYgenerator; import com.baomidou.mybatisplus.mapper.isqlinjector; com.baomidou.mybatiSplus.plugins.PaginationInterceptor; Import com.baomidou.mybatiSplus.plugins.performanceInterceptor; Import com.taven.web.springbootmp.MyMetaObjectHandler;@EnableTransactionManagement@Configuration@MapperScan("com.taven.web.springbootmp.mapper")public class MybatisPlusConfig { /** * mybatis-plus SQL execution efficiency plug-in [can be closed in production environment] */ @Bean public PerformanceInterceptor PerformanceInterceptor () {return New PerformanceInterceptor (); } / * * Pagination Plug-In, die automatisch Multi-Mieter im Datenbanktyp identifizieren, siehe die offizielle Website [Plugin-Erweiterung] * / @Bean Public PaginationInterceptor PaginationInterceptor () {return New PaginationInterceptor (); } @Bean public metaobjectHandler metaobjectHandler () {return New myMetaObjectHandLer (); } / *** Injektion im Primärschlüsselgenerator* / @Bean public ikeyGenerator keygenerator () {return New H2KeyGenerator (); } / *** Injection SQL Injector* / @bean public isqlinjector sqlinjector () {return New LogicsQlinjector (); }} importieren com.baomidou.mybatisplus.mapper.metaobjecthandler; import org.apache.ibatis.reflection.metaObject; org.slf4j.logger; MyMetaObjectHandler erweitert metaobjectHandler {geschützte endgültige statische Logger logger = loggerfactory.getLogger (application.class); @Override public void InsertFill (metaObject metaObject) {logger.info ("Machen Sie etwas Unerscheinbares, wenn Sie hinzugefügt werden"); } @Override public void updateFill (metaObject metaObject) {logger.info ("Machen Sie beim Aktualisieren etwas Unzuschreibliches"); }} 2. Codegenerierung
Führen Sie JUNIT aus, um Controller, Serviceschnittstelle, Implementierung, Mapper und XML zu generieren
import org.junit.test; import com.baomidou.mybatisplus.generator.autogenerator; import com.baomidou.mybatisplus.generator com.baomidou.mybatisplus.generator.config.packageconfig; import com.baomidou.mybatisplus.generator.config.strategyconfig; com.baomidou.mybatrial.generator.config.rules.dbtype; com.baomidou.mybatiSplus.generator.config.rules.namingstrategy;/** * <p> * Testgenerierungscode * </p> * * @Author K God * @Date 2017/12/18 */Public Class GeneratorsViceEntity {@Test public void generatecode () {String packageName = "com.taven.web.springbootmp"; boolean servicenamestartwithi = false; // Benutzer -> Benutzerservice, auf wahr eingestellt: Benutzer -> iUSerService Generatebytables (servicenamestartWithi, Packagename, "Cable", "Station"); // MANIGE IHRE TABLE -NAME} private void generateBytables (boolean servicenAntarthi- New GlobalConfig (); String dburl = "jdbc: mysql: // localhost: 3306/communicate"; DataSourceConfig DataSourceConfig = new DataSourceConfig (); DataSourceConfig.setDBType (dbType.mysql) .setUrl (dburl) .setUserName ("root") .setPassword ("root") .setDriverName ("com.mysql.jdbc.driver"); StrategyConfig StrategyConfig = new StrategyConfig (); StrategyConfig .SetCapitalMode (true) .setEntitylombokmodel (false) .setDbColumnderLine (true). .setAuthor ("yin tianwen") .SetoutputDir ("e: // dev // stsdev // spring-boot-mp // src // main // java") .setFileOverride (true); if (! servicenamestartWithi) {config.setServiceName ("%sService"); } neuer autogenerator (). setGlobalconfig (config) .setDataSource (DataSourceConfig) .SetStrategy (StrategyConfig) .setPackageInfo (New PackageConfig () .setParent (Packagename) .setController ("Controller"). } // private void generateByTables (String -Packagename, String ... TableName) {// Generatebytables (True, Packagename, TableName); //}}Die Konstruktion wurde zu diesem Zeitpunkt im Grunde genommen abgeschlossen und Sie können sie unten verwenden!
3. Verwenden Sie MyBatis-Plus
Zunächst führen wir den oben generiertenCode () oben aus und generieren den folgenden Code für uns basierend auf der Tabellenstruktur (der XML wurde manuell in Folgendes verschoben). Der Service und Mapper haben die Basisklasse geerbt und viele Methoden für uns verkapuliert. Sehen wir uns unten einige einfache Beispiele an.
/** * <p> * Front-End-Controller * </p> * * @author yin tianwen * @Since 2018-05-31 */ @Controller @RequestMapping ("/cable") öffentliche Klasse CableController {@Autowired Private Cables Service CableService; /*** LIST -Abfrage -Test**/@RequestMapping ("/1") @ResponseBody Public Object Test1 () {// Konstruieren Sie das EntityWrapper -Objekt, das der Entitäts- und Filter- und Abfrageberechnung entspricht. ew.where ("type = {0}", 1). LIST <Kabellose> list = CableService.SelectList (EW); Liste <map <String, Objekt >> Maps = CableService.SelectMaps (EW); System.out.println (Liste); System.out.println (Maps); zurück "ok"; }/*** Pagination Query -Test*/@RequestMapping ("/2") @ResponseBody public Object test2 () {// Konstruieren Sie das EntityWrapper -Objekt, das der Entität entspricht, und filtern Sie die Filterabfrage enttityWrapper <Cable> ew = New EntityWrapper <> (); ew.where ("type = {0}", 1) //. Seite <Kabellose> Seite = Neue Seite <> (1,10); Seite <Kabellose> pagerst = CableService.SelectPage (Seite, EW); Pagerstern zurückkehren; }/*** benutzerdefiniertes Abfragefeld*/@RequestMapping ("/3") @ResponseBody public Object test3 () {Object vl = null; // Konstruieren Sie das EntityWrapper -Objekt, das der Entität entspricht, und führen Sie die FilterabfrageentityWrapper <Cable> ew = New EntityWrapper <> () aus; ew.setsqlSelect ("id,` name`, " +" case type/n " +" Wenn 1 dann '220KV'/n " +" Ende typename ") .where (" Typ = {0} ", 1) //. Seite <> (1,10); Seite <Kabellose> pagerst = CableService.SelectPage (Seite, EW); Pagerstern zurückkehren; }/** * einfügen */@RequestMapping ("/4") @ResponseBody Public Object Test4 () {cable c = new Cable (); C.SetName ("optisches Kabel testen"); CableService.insert (c); zurück "ok"; }/** * update */@RequestMapping ("/5") @ResponseBody Public Object Test5 () {Kabel C = CableService.SelectById (22284L); C.SetName ("optisches Kabel von Test 2222"); C.SetType (1); CableService.UpdatebyId (c); zurück "ok"; }}Das obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, es wird für das Lernen aller hilfreich sein und ich hoffe, jeder wird Wulin.com mehr unterstützen.