Springboot ist ein Produkt, das geboren wurde, um die Erstellung, den Betrieb, das Debuggen und die Bereitstellung von Frühlingsanwendungen zu vereinfachen. Die automatische Montagefunktion ermöglicht es uns, uns besser auf das Geschäft selbst als auf eine externe XML -Konfiguration zu konzentrieren. Wir müssen nur die Spezifikationen befolgen und relevante Abhängigkeiten einführen, um einfach ein Webprojekt zu erstellen.
Die Datenbankvorgänge von Spring Framework sind in JDBC tief verkapselt. Durch die Abhängigkeitsinjektionsfunktion kann DataSource in jdbctemplate registriert werden, sodass wir die Objektrelationszuordnungen leicht vervollständigen und häufige Fehler vermeiden können. Im Springboot können wir es leicht verwenden.
Merkmale
Abhängigkeiten importieren
Fügen Sie die Abhängigkeit von jdbctemplate in pom.xml hinzu
<!-Spring JDBC-Abhängigkeitspaket mit Spring-Boot-Starter-JDBC oder Spring-Boot-Starter-Data-jpa wird automatisch die Abhängigkeit von Hikaricp erhalten-> <Deponcy> <gruppe> org.springFramework Paket-> <De vor Ort> <gruppe> Mysql </Groupid> <artifactId> mysql-connector-java </artifactid> </abhängig> <!-Tomcat ist standardmäßig eingebettet, wenn Sie den Container ersetzen müssen, es ist auch sehr einfach-> </gruppe> <gruppe> org.sspingfRamework <artifactid> Spring-Boot-Starter-Web </artifactId> </abhängig>
Stellen Sie eine Verbindung zur Datenbank her
Fügen Sie die folgende Konfiguration in application.Properties hinzu. Es ist erwähnenswert, dass Springboot die DataSource automatisch konfiguriert, was die Verwendung des Hikaricp -Verbindungspools priorisiert. Wenn es keine Abhängigkeit gibt, wählen Sie Tomcat-JDBC. Wenn keiner der ersten beiden verfügbar ist, wählen Sie Commons DBCP2 aus. Die Eigenschaft der Spring.DataSource.Type kann andere Arten von Verbindungspools angeben
Spring.DataSource.url = JDBC: MySQL: // localhost: 3306/Kapitel 4? UseUnicode = True & CharakterCoding = UTF-8 & Zerodatetimebehavior = converto NULL & ALLEMULTIKIQUERIES = TRUE & USSESSL = FALSPRING.DATASOURCE.PASSWORD = WOOTSPRING.DATASOURCE.UNERNAME = WOOT#SPRING.DATASOURCE.TYPE#MEHR Subtile Konfigurationen können durch das folgende Präfix#spring.datasource.hikari#spring.datasource.tomcat#Spring.datasource.dbcp2 eingestellt werden
Starten Sie das Projekt mit dem Protokoll, dass die HikaridataSource standardmäßig injiziert wird.
2018-05-07 10: 33: 54.021 Info 9640 --- [Main] OsjeaAntationMbeanExporter: Bean mit Namen 'DataSource' wurde für JMX Exposure2018-05-07 10: 33: 54.026 info 9640 --- [Main] osjeAntationMbeanExporporter: LaceMBean '--- [Main] OsjeAntationMbeanExporter: MBean' --- [Main] OsjeAntationMbeanExporter: MBean '--- [Main] OsjeAntationMbeanExporter: MBean' --- [Main] OsjeAnnotationMbeanExporter: MBEANWAHL: with JMX server as MBean [com.zaxxer.hikari:name=dataSource,type=HikariDataSource]2018-05-07 10:33:54.071 INFO 9640 --- [ main] osbwembedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8080 (http) with context path '' 2018-05-07 10: 33: 54.075 Info 9640 --- [Main] com.battcn.Capter4Application: Start Chapter4Application in 3,402 Sekunden (JVM Laufen) für 3,93)
Spezifischer Code
Führen Sie nach Abschluss der grundlegenden Konfiguration spezifische Codierungsvorgänge durch. Um die Codemenge zu reduzieren, werde ich keine Schnittstellen wie UserDao und UserService schreiben. Ich werde JDBCTEMplate direkt im Controller verwenden, um auf die Datenbank zuzugreifen. Dies ist nicht standardisiert. Lerne nicht von mir ...
Tabellenstruktur
Erstellen Sie eine Tabelle mit T_USER
Erstellen Sie Tabelle "T_USER" ("ID" int (8) nicht null auto_increment comment "Primärschlüsselinkrement", "Benutzername" varchar (50) Null Null -Kommentar "Benutzername", "Passwort" varchar (50) NICHT NULL Kommentar 'Passwort', Primärschlüssel ("ID`)).Entitätsklasse
Paket com.battcn.entity;/** * @Author Levin * @Since 2018/5/7 0007 */Public Class User {private long id; privater String -Benutzername; privates Zeichenfolgenkennwort; // todo weggelassen werden set}RESTful -Stilschnittstelle
Paket com.battcn.controller; import com.battcn.entity.user; import org.springframework.bean.factory.Annotation org.springframework.web.bind.annotation. @Autowired public springjdbccontroller (jdbctemplate jdbctemplate) {this.jdbctemplate = jdbctemplate; } @Getmapping public list <Bener> queryUsers () {// Abfragen Sie alle Benutzer string sql = "aus T_USER"; return jdbctemplate.Query (SQL, neues Objekt [] {}, New BeanPropertyRowMapper <> (user.class)); } @GetMapping ("/{id}") public User getUser (@PathVariable Long id) {// Abfragen string sql = "Select * von t_user Where id =?"; return jdbctemplate.queryforObject (SQL, neues Objekt [] {ID}, neuer BeanpropertyRowMapper <> (user.class)); } @DeletMapping ("/{id}") public int deluser (@PathVariable Long id) {// Benutzerinformationen gemäß der primären Schlüssel -ID -String SQL = "Aus T_USER löschen Where ID =?"; return jdbctemplate.update (SQL, ID); } @Postmapping public int adduser (@RequestBody -Benutzer) {// Benutzer string sql = "In T_USER einfügen (Benutzername, Passwort) Werte (?,?)"; return jdbctemplate.update (SQL, user.getUnername (), user.getPassword ()); } @Putmapping ("/{id}") public int EditUser (@PathVariable Long ID, @RequestBody -Benutzer Benutzer) {// Benutzerinformationen gemäß der Primärschlüssel -ID -String SQL = "Aktualisieren T_USER Setzen Sie username =? return jdbctemplate.update (SQL, user.getUnername (), user.getPassword (), id); }}prüfen
Da es sich bei der obigen Schnittstelle um eine Benutzeroberfläche im Ruhestand handelt, müssen wir nicht über den Browser abgeschlossen werden.
Erstellen Sie Unit -Test Kapitel 4Applicationstests und simulieren Sie Anforderungsvorgänge wie GET, POST, PUT, Löschen usw. über testRestTemplate
Paket com.battcn; import com.battcn.entity.user; import org.junit.test; import org.junit.runner.runwith; import org. org.springframework.boot.test.context.springboottest; import org.springframework.boot.test.web.client.TestrestTemplate; org.springframework.http.httpMethod; import org.springframework.http.ResponseEntity; import org.springframework.test.context.junit4.springrunner; importieren java.util.list; */@Runwith (springrunner.class) @springBoottest (classes = chapter4Application.class, WebEnvironment = SpringBoottest.Webenvironment.random_Port) öffentliche Klasse Kapitel 4ApplicationTests {private statische logger logger loggerfactory.getorylogger (chapter4ApplicationStests). @Autowired Private TestRestTemplate -Vorlage; @LocalServerport Private int Port; @Test public void test1 () löst Ausnahme aus {Vorlage.PostForentity ("http: // localhost:" + port + "/user", neuer Benutzer ("user1", "pass1"), Integer.class); log.info ("[Benutzererfolg hinzufügen]/n"); // todo Wenn es sich um die zurückgegebene Sammlung handelt, verwenden Sie Exchange anstelle von GetForentity, die den Typ Responseentity <user >> response2 = template.exchange erzwingen muss ("http: // localhost:" + port + "/user", httpMethod.get, null, neue parameterizedttypereference <liste <user> () () () {{{}); endgültige Liste <BENE> body = response2.getBody (); log.info ("[alle] - [{}]/n", Körper); Long userId = body.get (0) .getId (); ResponseEntity <Bener> response3 = template.getForentity ("http: // localhost:" + port + "/user/{id}", user.class, userId); log.info ("[Primärschlüsselabfrage] - [{}]/n", response3.getBody ()); template.put ("http: // localhost:" + port + "/user/{id}", neuer Benutzer ("user11", "pass11"), userID); log.info ("[erfolgreichem Benutzer ändern]/n"); template.delete ("http: // localhost:" + port + "/user/{id}", userId); log.info ("[erfolgreicher Benutzer löschen]"); }}Zusammenfassen
In diesem Kapitel werden mehrere häufig verwendete Operationen von Jdbctemplate vorgestellt. Weitere Informationen finden Sie in der Dokumentation von JDBCTEMplate API.
Viele Bigwigs haben Tutorials über Springboot geschrieben. Wenn es Ähnlichkeiten gibt, vergib mir bitte. Dieses Tutorial basiert auf dem neuesten Spring-Boot-Starter-Elternteil: 2.0.1.Release, und die Funktionen der neuen Version werden gemeinsam eingeführt ...