Spring Boot ist eine neue Sache für mich. Während meines Lernprozesses stellte ich fest, dass dieses Ding immer noch leicht zu beginnen ist. Wenn der Spring -Start nicht konfiguriert ist, verwendet er standardmäßig Spring Data JPA. Dieses Ding kann als ein sehr einfaches Werkzeug gesagt werden, aber ich bevorzuge es immer noch, MyBatis zu verwenden. Es gibt kein bestes Werkzeug, nur dieses ist für mich geeignet.
Apropos MyBatis, kürzlich gibt es ein sehr nützliches Tool - MyBatis -Plus (offizielle Website). Die aktualisierte Version ist jetzt 2.1.2 und diese Version wird auch hier verwendet. Meine Lieblingsfunktionen sind Codegeneratoren und bedingte Konstruktoren, sodass sie leichter entwickelt werden können.
Auf der offiziellen Website von MyBatisplus gibt es ein Spring -Boot -Beispiel. Ich folgte es und das Programm lief nicht. Später fand ich heraus, dass die von Demo verwendete H2 -Datenbank nicht mit MySQL dieselbe ist. Wenn Sie also MyBatiSplus integrieren möchten, können Sie sich die offizielle Website nicht ansehen und Umwege vermeiden.
Das Folgende ist der Integrationsprozess
1. Erstens müssen Sie alle erforderlichen JAR -Dateien erhalten. Die Dinge, die Sie für pom.xml brauchen, sind wie folgt
pom.xml (unvollständig)
<!-- mybatis-plus begin --><dependency> <groupId>com.baomidou</groupId> <artifactId>mybatisplus-spring-boot-starter</artifactId> <version>1.0.4</version></dependency><dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus</artifactId> <version> 2.1.2 </version> </abhängig> <depeopcy> <gruppe> org.springFramework <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.1.3</version></dependency><!--mysql--><dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <scope>runtime</scope></dependency><dependency> <gruppe> org.mybatis.spring.boot </Groupid> <artifactId> mybatis-pring-boot-starter </artifactid> <version> 1.3.1 </Version> </abhängig>
2. Fügen Sie myBatis-bezogene Konfigurationen wie Konto, Kennwort usw. hinzu. Hier habe ich Application.yml verwendet, um übereinzustimmen.
application.yml
Server: Port: 8080#Springspring: DevTools: Neustart: Aktiviert: TRUE #Dis ist für die Hot Deployment und es hängt nicht mit myBatis#Datenbankkonfiguration DataSource: Treiberklassenname: com.mysql.jdbc.driver username: root kennwort: root kennwort: root kennwort: JDBC: MySQL: // MySQLDB: 3306/TDX_SHOP? UseUnicode = True & CharacterCoding = UTF-8 Typ: com.alibaba.druid.pool.druiddatasource #here konfiguriert den Druid-Verbindungspool. Im Folgenden finden Sie alle Konfigurationsinformationen für Druidenfilter: Stat, Wand, log4j MaxActive: 20 initialSize: 1 maxwait: 60000 minidle: 1 ZeitverbindlichkeitenevictionRunsmillis: 60000 MineVictableIdletImemillis: 300000000 ValidationQuery: x 'x' test -idle: True testonrorne: Falsches Testen: Falsches Testen: falsche testonreturn MaxopenPrepararedStatements: 20 Verbindungs-Properties: druid.stat.merggSql = ture; druid.stat.slowsqlmillis = 5000 #mybatismybatis: mapPer-locations: classPath*:/mapper/** mapper.xml #-Anl #-Plade Die XML-Datei in coml in com.x.maper. Hier ist der Mapper unter Ressourcen #Entity -Scan, mehrere Pakete werden durch Kommas oder Semikolons getrennt. TypealiaSespackage: com.tdx.account_service.Entity #This ist der Ort der Entitätsklassenkonfiguration: MAP-ANDERSCORE-TO-CAMEL-CASE: TRUE Cache-fähig: Falsch #LoggingLogging: Level: Warn
Das Konfigurationsmaterial ähnelt dem, was wir früher mit MyBatis konfiguriert haben, aber Spring Start hat keine XML -Konfigurationsdatei. Achten Sie auf den Inhalt des roten Buchstabens, es gibt im Grunde kein Problem.
3.. MyBatis-plus-Konfigurationsdatei ------ MyBatiSplusconfig. Erklären wir zunächst den Dateipfad in der obigen Abbildung. Unter ihnen wird MyBatiSplusconfig im Konfigurationsordner platziert, während die XML -Datei in den Mapper unter Resouces platziert ist.
Dann gibt es den MyBatiSplusconfig -Inhaltsteil
MyBatiSproperties.java
Paket com.tdx.account_service.config; import com.alibaba.druid.pool.druiddataSource; import com.alibaba.druid.support.http.statviewServlet; Import com.alibaba.druid.support.http.wstatfilter; com.baomidou.mybatisplus.mybatisconfiguration; import com.baomidou.mybatisplus.mybatisconfiguration; import com.baomidou.mybatiSplus.entity.globalconfiguration; import com.baomidou.mybatisplus.enums.enums.enums.enums.enums.enums.enums.enums.enums.enums.enums.enums.enums.enums.Enums.Enums.Enums.Enums.Enums.Enums.Enums.Enums.Dbtype; Import com.baomidou.mybatiSplus.plugins.PaginationInterceptor; Import com.baomidou.mybatiSplus.plugins.PerformanceInterceptor; Import com.baomidou.mybatiSplus.plugins.parser.isqlparser; com.baomidou.mybatisplus.plugins.parser.isqlparserfilter; import com.baomidou.mybatisplus.plugins.parser.tenant.tenantHandler; com.baomidou.mybatisplus.spring.mybatissqlSessionfactorybean; Import com.baomidou.mybatisplus.spring.boot.starter.springbootvfs; importieren com.baomidou.mybatisplus.toolkit.pluginutils; net.sf.jsqlparser.expression.expression; import net.sf.jsqlparser.expression.longValue; import org.apache.ibatis.mapping.databaseIdProvider; org.apache.ibatis.reflection.metaObject; import org.mybatis.spring.annotation org.springframework.boot.bind.relaxedPropertyresolver; import org.springframework.boot.context.properties.enableConfigurationProperties; importieren org.springFramework.boot.web.servlet.Filterregmorientalmorientiert org.springframework.boot.web.servlet.servletRegistrationBean; import org.springframework.context.annotation.bean; org.springframework.core.io.defaultresourceloader; import org.springframework.core.io.resourceloader; import org.springframework java.sql.SQLException;import java.util.ArrayList;import java.util.List;/** * code is far away from bug with the animal protecting * ┏┓ ┏┓ * ┏┛━━━━━┛┻┓ * ┃ ┃ * ┃ ━ ┃ * ┃ ━ ┃ * ┃ ┳┛ ┗┳ ┃ * ┃ ┃ * ┃ ┃ * ┃ ┗┳ ┃ * ┃ ┃ * ┃ ┗┓ ┏━┛ * ┃ ┃ ┃ Segen des Tieres* ┃ ┃ ┃ ┃ ┃ ┃ ┗┓ ┏┛ ┏┛ ┃ ┃ ┃ segne of the Beast* ┃ ┃ ┃ ┃ ┃ Keine Fehler! * ┃ ┗━━━┓ * ┃ ┣┓ * ┃ ┏┛ * ┗┓┓┏━┳┓┏┛ * ┃┫┫ ┃┫┫ * ┗┻┛ ┗┻┛ * * @Description: MyBatiSplus -Konfiguration * --------------------------------------------------------------------------------------------------------------------------------------------------------- privat relaxedPropertyresolver PropertyResolver; @Autowired Private DataSource -DataSource; @Autowired Private MyBatiSproperties Properties; @Autowired private ressourceloader ressourceloader = new DefauLtresourceloader (); @Autowired (erforderlich = falsch) private Interceptor [] Interceptors; @Autowired (erforderlich = false) Private DataBaseIdProvider DataBaseIdProvider; /** * @Description: MyBatis-plus SQL Ausführungseffizienz-Plug-In [kann in der Produktionsumgebung geschlossen werden] * --------------------------------------------------------------------------------------------------------------------------------------------------------- */ @Bean public DataSource druidDataSource () löst SQLEXception {this.propertyresolver = new RelpayedProperTyresolver (Umgebung, "Spring.DataSource") aus; System.out.println("=============================================================================================== =====================================================ieben =====================================================ieben =====================================================ieben DataSource.Seturl (PropertyResolver.getProperty ("URL")); DataSource.SetInitialSize (Integer.ValueOf (PropertyResolver.getProperty ("initial-Größe")); DataSource.setMaxWait (Long.ValueOf (PropertyResolver.getProperty ("max-wait")); DataSource. /*** @Description: MyBatis-Plus-Pagination-Plugin* -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Erstellen Sie 2017/9/19 13:59*/@Bean paginationsinterceptor paginationsinterceptor () {Paginationsinterceptor Page = neuer Paginationsinterceptor (). @Return */ @Bean public mybatissqlSessionFactoryBean MyBatissQlSessionFactoryBean () {MyBatissqlSessionFactoryBean MyBatiSplus = New MyBatissqlSessionFactoryBean (); if (Stringutils.Hastext (this.Properties.getConfigLocation ()) {mybatiSplus.setConfigLocation (this.resourceloader.getResource (this.properties.getConfigLocation)); (! Auto-> `0` (" Datenbank-ID-Selbstversorgung ") input->` 1` (Benutzereingabe-ID ") ID_WORKER->` 2` ("Global eindeutige ID") UUID-> `3` (" Global eindeutige ID ") globalconfig.setIdtype (2); MyBatisconfiguration (); (Stringutils.hasLength (this.Properties.GetTypealiaSespackage ())) {mybatiSplus.SettTypealiaSespackage (this.properties.gettTypealiaSespackage ()); } if (StringUtils.hasLength(this.properties.getTypeAliasesPackage()); } if (StringUtils.hasLength(this.properties.getTypeHandlersPackage())) { mybatisPlus.setTypeHandlersPackage(this.properties.getTypeHandlersPackage()); } if (! DruidStatViewServle () {//org.springframework.boot.Context.Embeded.ServletRegistrationBean bietet die Klasse für die Registrierung. ServletRegistrationBean.AddinitParameter ("erlauben", "127.0.0.1"); Sehen Sie sich die Informationen an. Filterregistrierung * * @return */@Bean öffentliches Filterregistrierungsbean DruidStatFilter () {Filterregistrierungsbeamte Filterregistrierung filterregistrationBean.addinitParameter ("Ausschlüsse", "*. Js,*. Gif,*. JPG,*. Png,*. CSS,*. ICO,/Druid/*");Hier ist die vollständige Konfigurationsdatei. Es ist wichtig zu beachten, dass die eingeführten Pakete nicht falsch sind!
4.. Sie müssen auch DAO Scaning aktivieren. Es ist sehr einfach. Fügen Sie der Startdatei @Mapperscan ("com.tdx.account_service.dao*") hinzu. Das Folgende ist die vollständige.
Zu diesem Zeitpunkt wurde die Konfiguration abgeschlossen und Sie können das Projekt nach dem Ausführen ausführen.
Ich denke, MyBatis-Plus ist der lustigste Teil des Codeberators. Im Folgenden ist der Prozess der Verwendung des Codegenerators
Fügen Sie pom.xml etwas hinzu
<Depopenty> <gruppe> org.apache.velocity </Groupid> <artifactId> Velocity-Engine-Core </artifactId> <version> 2.0 </Version> </abhängig>
1. Codegeneratorkonfigurationsdatei
MyBatiSplusconfig.java
/*** Copyright (C) 2011-2016, Hubin ([email protected]). * <p> * lizenziert unter der Apache -Lizenz, Version 2.0 (die "Lizenz"); Sie dürfen diese Datei nur in Übereinstimmung mit der Lizenz verwenden. Sie können eine Kopie von * der Lizenz bei * <p> * http://www.apache.org/licenses/license-2.0 * <p> * erhalten, es sei denn, dies ist nach geltendem Recht erforderlich oder schriftlich zu vereinbart, Software *, die im Rahmen der Lizenz verteilt ist, wird auf einer "As" -Basis, ohne * Garantien oder Bedingungen, entweder ausdrückt oder ausdrückt oder impliziert. Siehe die * Lizenz für die spezifische Sprache, die Berechtigungen und Einschränkungen gemäß * der Lizenz regieren. */package com.tdx.account_service.generator; import java.io.file; import Java.util.ArrayList; import Java.util.Collections; com.baomidou.mybatisplus.generator.autogenerator; import com.baomidou.mybatisplus.generator com.baomidou.mybatisplus.generator.config.globalconfig; import com.baomidou.mybatisplus.generator.config.packageConfig; import Com.baomidou.mybatiSsplus.generator.config.strategyconfig; com.baomidou.mybatisplus.generator.config.templateconfig; import com.baomidou.mybatiSplus.generator com.baomidou.mybatisplus.generator.config.po.tableInfo; Import com.baomidou.mybatisplus.generator.config.rules.dbcolumntype; com.baomidou.mybatisplus.generator Code ohne Fehler! * ┃ ┗━━━┓ * ┃ ┣┓ * ┃ ┏┛ * ┗┓┓┏━┳┓┏┛ * ┃┫┫ ┃┫┫ * ┗┻┛ ┗┻┛ * * @Description: MyBatiSplus Code Generator * -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 3. // Dateipfad private statische String -Authornname = "liang.guangqing"; // Autor private statische String -Tabelle = "sc_user"; // Tabellenname private statische Zeichenfolge prefix = "sc_"; // Tabelle Präfix private statische Dateidatei = neue Datei (Packagename); private static String path = file.getabsolutepath (); public static void main (String [] args) {// Anpassen die Felder, die gefüllt werden müssen. tableFilllist.add (neuer tableFill ("asdd_ss", fieldFill.insert_update)); // Codegenerator Autogenerator mpg = neuer autogenerator (). XML Secondary Cache.SetBaseresultmap (TRUE) // XML RESERGSMAP .SETBASECOLUMNLIST (TRUE) // XML Columnlist .Setopen (Falsch) // Öffnen Sie den Ordner nach der Generation. .SetXmlName ("%smapper") .setServiceName ("%sservice") .setServiceImplName ("%sserviceImpl") .setControllername ("%scontroller") .setDatasource (// Data Source -Konfiguration Neue dataSourceConFig). type.settypeConvert (neue mySQLTYPeconvert () {// Datenbanktabelle Feldtyp Conversion [optional] @Override public dbcolumnType ProcessTypeConvert (String FieldType) {System.out.println ("Conversion Typ:" + Fieldtype); // if (Fieldtype.Ttype.tolowerCht "(" Contains "; // DBCOLUnNTYPE.BOOLEAN zurückgeben; .seturl ("jdbc: mysql: //127.0.0.1: 3306/tdx_shop? naming.settablePrefix (neuer String [] {Präfix}) // Hier können Sie es in Ihrem Tabellen -Präfix ändern. String [] {"test"}) // Die generierte Tabelle ausschließen // übergeordnete Entität übergeordnete Klasse // .SetsuperEntityClass ("com.baomidou.demo.Testentity") // benutzerdefinierte Entität, öffentliches Feld //.SetsuperentityColumns(New String [] {"test_id"}). .SetSuperMapperClass ("com.baomidou.demo.TestMapper") // übergeordnete Elternklasse // .SetsuPerServiceClass ("com.baomidou.demo.TestService") // Custom Service Implementation Class // .SetsuperserviceImpleClasse ("com.baumicomidou. / com.baomidou. / com.baomidou.demo.destSuperservice /" com.baomidouNe. class. {this.name = name; // .setentityBooleAncolumnRemoveSprefix (true) // .setRestControllerSyle (true) //setControllmapinghyphenstyle (true). Path.SetController ("Controller") // Hier ist der Controller -Paketname, Standard -Web .Setentity ("Entity") .setMapper ("DAO") .SetService ("Service") .SetSeServiceImpl ("service.impl") //.setxml(" -Mapper -SetCFG (// Inject Custom Configuration, yous "). InjectionConfig () {@Override public void initmap () {map <string, Object> map = new HashMap <> (); }.setFileOutConfigList(Collections.<FileOutConfig>singletonList(new FileOutConfig("/templates/mapper.xml.vm") { // Custom output file directory @Override public String outputFile(TableInfo tableInfo) { return path+"/src/main/resources/mapper/" + tableInfo.getEntityName() + "Mapper.xml"; Verzeichnis. // Ausführen, um mpg.execute () zu generieren; // Einstellungen für Injektionseinstellungen drucken, wie man den Injektionsinhalt in der Vorlage [Noble] system.err.println (mpg.getCfg (). GetMap (). Get ("ABC")) zeigen; }}
Es gibt immer noch viele Änderungen in der Datei. Das Wichtigste ist die Verbindungsinformationen von MySQL. Es gibt keinen Grund, warum Ihr Konto und Ihr Passwort falsch sind. Sie können eine Verbindung dazu herstellen. Stellen Sie zweitens den Pfad der von Ihnen generierten Vorlagendatei ein. Der Weg, den ich hier erzeugt habe, ist in der obigen Abbildung zu sehen. Es befindet sich unter com.tdx.account_service. Beachten Sie, dass die XML -Datei unter Ressourcen platziert werden sollte, ansonsten wird sie erkannt und besagt, dass diese Methode nicht gefunden werden kann.
Die gemäß der Code der offiziellen Website generierten Dateien sind im Grunde leer. Der Hauptgrund ist, dass MyBatis-Plus öffentliche Methoden integriert und auf viele häufig verwendete Tools verwiesen werden kann. Hier stelle ich die von mir geänderte Controller.java.vm -Datei zur Verfügung, hauptsächlich nach meinen eigenen Gewohnheiten.
Controller.java.vm
Paket $ {package.controller}; import org.springframework.web.bind.annotation org.springframework.web.bind.annotation.restcontroller; #elseeimport org.springframework.steretype.controller; org.springframework.beans.factory.annotation.autowired; import com.baomidou.mybatisplus.mapper.EntityWrapper; com.baomidou.mybatiSplus.Plugins.Page; Import {package.service}. $ {package.entity} .common.datatablesjson; import $ {package.entity} .common.jsonResult; import $ {package.entity}. $ {Entity}; import org. ┃ *┃ ┳┛ ┗┳ ┃ *┃ ┃ *┃ ┃ ┃ ┃ ┗┳ ┃ ┃ ┃ ┃ ┃ ┗┳ ┃ ┃ ┃ ┃ ┃ ┃ ┗┓ ┏━┛ ┃ ┃ ┃ ┃ ┃ ┃ ┃ ┗┓ ┏━┛ ┃ ┃ ┃ ┃ ┃ ┗┓ ┏━┛ ┏━┛ ┃ ┃ ┃ ┃ ┏━┛ ┃ ┃ ┃ ┃Die code hat keine wässern! * ┃ ┗━━━┓ * ┃ ┣┓ * ┃ ┏┛ * ┗┓┓┏━┳┓┏┛ * ┃┫┫┃┫ * ┗┻┛ ┗┻┛ * * @Description: $ {Entity} Controller * ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ */#if ($ {restControllerSyle})@rastController#else@controller#end@RequestMapping ("#if ($ {package.modulenName})/$ {package.modeName}# End/#if ($ {ControllerMappinghyphenstyle}) $ {ControllerMapinghyphen}#else $ {table.entityPath}#")#if ($ {SuperControllerClass}) public Klasse $ {table.controllername} erweitert $ {SuperControllerClass} {#elsepublic class $ {table.controllername} {#end private logger logger logger = loggerfactory.getLogger ($ {table.controllername} .class); @Autowired public $ {table.serviceName} $ {table.entityPath} Service; /*** @Description: Holen Sie sich die Paging -Liste* ----------------------------------------------------------------------------------------------------------------------------------------------------------------- get${entity}List(${entity} param , @RequestParam(value = "draw",defaultValue = "0") Integer draw, @RequestParam(value = "length") Integer length, @RequestParam(value = "start") Integer start) { DatatablesJSON<${entity}> resJson=new DatatablesJSON<>(); Versuchen Sie {Integer pageno = getPageno (Start, Länge); Seite <$ {Entity}> Seite = Neue Seite <$ {Entity}> (Pageno, Länge); $ {table.entityPath} service.selectPage (Seite, neuer EntityWrapper <$ {Entity}> (Param)); Resjson.SetDraw (Draw ++); resjson.setRecordstotal (page.gettotal ()); resjson.setRecordsFiltered (page.gettotal ()); resjson.setData (page.getRecords ()); Resjson.SetSuSccess (wahr); } catch (Ausnahme e) {Resjson.SetSuSccess (False); Resjson.SetError ("Ausnahmeinformationen: {"+e.getClass (). getName ()+"}"); logger.info ("Ausnahmeinformationen: {}"+e.getMessage ()); } return resjson; } /** * @Description: Get $ {Entity} durch ID * ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- id) {jsonResult <$ {Entity}> Resjson = new JsonResult <> (); try {$ {Entity} param = $ {table.entityPath} service.SelectbyId (id); Resjson.SetData (Param); Resjson.SetSuSccess (wahr); } catch (Ausnahme e) {Resjson.SetSuSccess (False); Resjson.SetMessage ("Ausnahmeinformationen: {"+e.getClass (). getName ()+"}"); logger.info ("Ausnahmeinformationen: {}"+e.getMessage ()); } return resjson; } /** * @Description: $ {Entity} durch ID * löschen ----------------------------------------------------------------------------------------------------------------------------------------------------------------- JsonResult <> (); try {resjson.setsuSccess ($ {table.entityPath} service.deletebyId (id)); } catch (Ausnahme e) {Resjson.SetSuSccess (False); Resjson.SetMessage ("Ausnahmeinformationen: {"+e.getClass (). getName ()+"}"); logger.info ("Ausnahmeinformationen: {}"+e.getMessage ()); } return resjson; } /** * @Description: Update $ {Entity} by id * -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- $ {Date} */ @RequestMapPing (value = "/ $ {Entity} byid", method = requestMethod.post) public Object -Update $ {Entity} von ID ($ {Entity} Param) {jsonResult <$ {Entity}> resjson = new jsonresult <> (); try {resjson.setsuSccess ($ {table.entityPath} service.UpdatebyId (Param)); } catch (Ausnahme e) {Resjson.SetSuSccess (False); Resjson.SetMessage ("Ausnahmeinformationen: {"+e.getClass (). getName ()+"}"); logger.info ("Ausnahmeinformationen: {}"+e.getMessage ()); } return resjson; } /** * @Description: $ {Entity} * hinzufügen ----------------------------------------------------------------------------------------------------------------------------------------------------------------- JSONRESULT <$ {Entity}> Resjson = new JsonResult <> (); try {resjson.setsuSccess ($ {table.entityPath} service.insert (param)); } catch (Ausnahme e) {Resjson.SetSuSccess (False); Resjson.SetMessage ("Ausnahmeinformationen: {"+e.getClass (). getName ()+"}"); logger.info ("Ausnahmeinformationen: {}"+e.getMessage ()); } return resjson; }}Zusätzlich zu dieser Datei folge ich der offiziellen Website der anderen Codevorlagen. Hier beziehe ich mich auf 3 externe Dateien, einschließlich AbstractController.java (Controller -Basisklasse), DataTablesjson.java und JsonResult.java. Dann beziehen sich diese Dateien auf andere Dateien. Ich war verwirrt. Warum gibt es so viele Dateien? Es scheint, dass, wenn alle von ihnen gepostet werden, mehr Platz in Anspruch nehmen wird. Also habe ich mich entschlossen, an Code -Cloud zu glauben. Wenn Sie es benötigen, laden Sie die Code -Cloud bitte gemäß den wenigen Dateien in Code -Cloud herunter. Es ist zu beachten, dass meine Vorlagen direkt durch das Vorlagenverzeichnis in mybatis-plus.jar ersetzt werden.
Schließlich ist es der Testprozess
Die folgenden Codeausschnitte werden in der Controller -Datei platziert, und dann wird das Programm gestartet, der dem Port und der Anforderungsmethode entspricht. Zum Testen müssen Sie nach Ihrer eigenen Einheitskurs arbeiten, sodass nur Referenz dient.
/** * Paginationsseite */@getmapping ("/test") public Page <Benetzbuchs> test () {return userService.SelectPage (neue Seite <Unters> (0, 12)); }/*** AR Partial Test*/@getmapping ("/test1") public page <user> test1 () {user user = new user (); System.err.println ("Alle löschen:" + user.delete (null)); //user.setid(2017091801l); user.setAccout ("test"+num ++); user.setType ("test"); user.setCreateTime (neues Datum ()); user.setphone ("13111110000"); user.setPassword ("123456"); user.setNickname("guangqing"+2*num++); user.insert(); System.err.println("Query insert result: " + user.selectById().toString()); //user.setNickname("mybatis-plus-ar"); System.err.println("Update:" + user.updateById()); return user.selectPage(new Page<User>(0, 12), null); } /** * Add, delete, modify and check CRUD */ @GetMapping("/test2") public User test2() { User user = new User(); user.setId(123456L); user.setAccout("test"); user.setType("test"); user.setCreateTime(new Date()); user.setPhone("13111110000"); user.setPassword("123456"); user.setNickname("guangqing"); System.err.println("Delete a data: " + userService.deleteById(1L)); System.err.println("Insert a data: " + userService.insert(user)); User user2 = new User(); user.setId(223456L); user.setAccout("test2"); user.setType("test"); user.setCreateTime(new Date()); user.setPhone("13111110000"); user.setPassword("123456"); user.setNickname("guangqing"); boolean result = userService.insert(user); // Automatic writeback ID Long id = user.getId(); System.err.println("Insert a piece of data: " + result + ", Insert information: " + user.toString()); System.err.println("Query: " + userService.selectById(id).toString()); Page<User> userListPage = userService.selectPage(new Page<User>(1, 5), new EntityWrapper<>(new User())); System.err.println("total=" + userListPage.getTotal() + ", current list size=" + userListPage.getRecords().size()); return userService.selectById(1L); } @GetMapping("testSelect") public Object testSelect() { Integer start = 0; Integer length =10; User param = new User(); //param.setNickname("guangqing2"); Integer pageNo=getPageNo(start,length); Page<User> page =new Page<User>(pageNo,length); EntityWrapper<User> ew = new EntityWrapper<User>(); ew.setEntity(param); ew.where("password={0}","123456") .like("nickname","guangqing") .ge("create_time","2017-09-21 15:50:00"); userService.selectPage(page, ew); DatatablesJSON<User> resJson= new DatatablesJSON<>(); //resJson.setDraw(draw++); resJson.setRecordsTotal(page.getTotal()); resJson.setRecordsFiltered(page.getTotal()); resJson.setData(page.getRecords()); return resJson; } @GetMapping("/selectsql") public Object getUserBySql() { JSONObject result = new JSONObject(); result.put("records", userService.selectListBySQL()); Rückgabeergebnis; } /** * 7. Pagination size Number of displays on one page Current page number* Method 1: http://localhost:8080/user/page?size=1¤t=1<br> * Method 2: http://localhost:8080/user/pagehelper?size=1¤t=1<br> * / // Parameter mode pagination @GetMapping("/page") public Object page(Page page) { return userService.selectPage(page); } // ThreadLocal Pattern pagination @GetMapping("/pagehelper") public Object pagehelper(Page page) { PageHelper.setPagination(page); page.setRecords(userService.selectList(null)); page.setTotal(PageHelper.freeTotal());//Get the total number and free resources. PageHelper.getTotal() return page; } /** * Test things* http://localhost:8080/user/test_transactional<br> * Access the following and no data is found to indicate that things are reliable! ! <br> * http://localhost:8080/user/test<br> * <br> * Start Application Add @EnableTransactionManagement The annotation seems to be enabled without default<br> * Methods that require things plus @Transactional is a must! ! */ @Transactional @GetMapping("/test_transactional") public void testTransactional() { //userService.insert(new User(1000L, "Test Things", 16, 3)); System.out.println("Exception is thrown manually here and data is automatically rolled back"); throw new RuntimeException(); }这么多的测试,我觉得最有趣的是条件构造器,在官网上有更齐全的,而我这里是按照我自己的需求写的。
最后谢谢大家的观看,写博客经验不足,写得不好请见谅,如果能给你带来帮助请点个赞,若遇到不明白的,或者我有写错的地方请提出,谢谢!也希望大家多多支持武林网。