[JAVA] Implementieren Sie CRUD mit Spring Boot + Thymeleaf + MySQL

Letztes Mal habe ich den folgenden Artikel geschrieben. Führen Sie die WEB-Anwendung mit Spring Boot + Thymeleaf aus

Greifen Sie diesmal mit derselben Konfiguration auf die Webanwendung mit REST-Typ zu und betreiben Sie die Daten in der Datenbank. Es handelt sich um eine Anwendung, die eine Liste von Tabellendatensätzen auf dem zuerst angezeigten Bildschirm anzeigt und dann Daten registriert, vorhandene Daten aktualisiert und vorhandene Daten von diesem Bildschirm löscht. Zusätzlich zu dem im vorherigen Artikel wird in der Konfiguration MySQL für die Datenbank verwendet. In diesem Artikel wird das Verfahren zum Erstellen von MySQL weggelassen. Darüber hinaus wird der O / R-Mapper nicht für die DB-Verbindung verwendet, sondern nur JDBC.

Mac OS X 10.12 Java 1.8.0_92 Spring Tool Suite 3.8.4 Spring Boot 1.5.3 thymeleaf 2.1.5

API-Liste

Erstellen Sie 5 APIs wie folgt

NO METHOD url Bewegung
1 GET /sample/ Alle Tabellen anzeigen
2 GET /sample/:id id Siehe 1 angegeben
3 POST /sample/ Registrierung registrieren
4 PUT /sample/:id 1 Datensatzaktualisierung
5 DELETE /sample/:id 1 Datensatz löschen

allgemeiner Teil

Erstellen Sie die obige API in "SampleController.java", die im vorherigen Artikel verwendet wurde. Erstellen Sie in MySQL eine Tabelle mit dem Namen user und bearbeiten Sie die Daten in der Tabelle mit REST.

DB

CREATE DATABASE mysql CHARACTER SET UTF8;
CREATE TABLE user (
  id int AUTO_INCREMENT,
  name varchar(254)
);
INSERT INTO user (id, name) VALUES (1, "kusakarikai");

Additions- / Korrekturdatei 1.png

** Benutzertabellendefinition **

java:com.example.User.java


package com.example;

public class User {
	private int id;
	private String name;

	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
}

ActionForm

java:com.example.UserForm.java


package com.example;

public class UserForm {
	private String name;

	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
}

** ODER Kartendefinition ** Wenn ResultSet.next () mit while geloopt wird, kann das Phänomen, dass das erste Element nicht gelesen wird, nicht gelöst werden und wird direkt vor der Schleife geschrieben.

java:com.example.UserMapper.java


package com.example;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import org.springframework.jdbc.core.RowMapper;

public class UserMapper implements RowMapper<List<User>> {
	public List<User> mapRow(ResultSet rs, int rowNum)
     throws SQLException {
		List<User> list = new ArrayList<>();
		User tmp_user = new User();
		tmp_user.setId(rs.getInt("id"));
		tmp_user.setName(rs.getString("name"));
		list.add(tmp_user);
		while (rs.next()) {
			User user = new User();
			user.setId(rs.getInt("id"));
			user.setName(rs.getString("name"));
			list.add(user);
		}
		return list;
	}
}

** DB-Verbindungseinstellungen **

src/main/resources/application.properties


spring.datasource.url=jdbc:mysql://127.0.0.1:3306/DB-Name
spring.datasource.username=Nutzername
spring.datasource.password=Passwort
spring.datasource.driver-class-name=org.gjt.mm.mysql.Driver

** Abhängigkeitseinstellungen **

pom.xml


<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
</dependency>

1 GET /sample/ Ruft alle Datensätze in der Benutzertabelle ab und zeigt sie in einer Liste an.

Controller

java:com.example.SampleController.java


@Autowired
private JdbcTemplate jdbcTemplate;

@RequestMapping(path = "/sample", method = RequestMethod.GET)
String index(Model model) {
	List<User> list = jdbcTemplate.queryForObject("select * from user", new UserMapper());
	model.addAttribute("list", list);
	return "sample/index";
}

template

src/main/resources/templates/sample/index.html


<table class="list">
  <tr>
    <th>ID</th>
    <th>Name</th>
  </tr>
  <tr th:each="list:${list}">
    <td th:text="${list.id}"></td>
    <td th:text="${list.name}"></td>
  </tr>
</table>

2 GET /sample/:id Ruft einen Datensatz in der Benutzertabelle ab.

Controller

java:com.example.SampleController.java


@Autowired
private JdbcTemplate jdbcTemplate;

@RequestMapping(path = "/sample/{id}", method = RequestMethod.GET)
String show(Model model, @PathVariable("id") int id) {
    List<User> list = jdbcTemplate.queryForObject("select * from user where id = ? ", new Object[] { id }, new UserMapper());
    model.addAttribute("list", list);
    return "sample/index";
}

template Weggelassen (wie NO1)

3 POST /sample Registrieren Sie die Eingabe in der Benutzertabelle. Leiten Sie nach der Registrierung zur NO1-API um, um die Liste abzurufen und auf dem Bildschirm anzuzeigen.

Controller

java:com.example.SampleController.java


@Autowired
private JdbcTemplate jdbcTemplate;

@ModelAttribute
UserForm userForm() {
    return new UserForm();
}

@RequestMapping(path = "/sample", method = RequestMethod.POST)
String create(Model model, @ModelAttribute UserForm userForm) {
    jdbcTemplate.update("INSERT INTO user (name) values (?)", userForm.getName());
    return "redirect:/sample";
}

template

src/main/resources/templates/sample/index.html


<form method="post" name="create" action="/sample" accept-charset="UTF8">
    <input type="text" name="name"/>
    <input type="submit" value="Anmelden" />
</form>

4 PUT /sample/:id Aktualisieren Sie vorhandene Registrierungsdetails. Leiten Sie nach der Registrierung zur NO1-API um, um die Liste abzurufen und auf dem Bildschirm anzuzeigen.

Controller

java:com.example.SampleController.java


@Autowired
private JdbcTemplate jdbcTemplate;

@ModelAttribute
UserForm userForm() {
    return new UserForm();
}

@RequestMapping(path = "/sample/{id}", method = RequestMethod.PUT)
String update(Model model, @ModelAttribute UserForm userForm, @PathVariable("id") int id) {
    jdbcTemplate.update("UPDATE user SET name = ? where id = ? ", userForm.getName(), id);
    return "redirect:/sample";
}

template

src/main/resources/templates/sample/index.html


<form method="post" action="/sample/:id">
    <input type="hidden" name="_method" value="put">
    <input type="text" name="name">
    <input type="submit">
</form>

5 DELETE /sample/:id Löschen Sie die vorhandenen Registrierungsdaten. Leiten Sie nach der Registrierung zur NO1-API um, um die Liste abzurufen und auf dem Bildschirm anzuzeigen.

Controller

java:com.example.SampleController.java


@Autowired
private JdbcTemplate jdbcTemplate;

@RequestMapping(path = "/sample/{id}", method = RequestMethod.DELETE)
String destory(Model model, @PathVariable("id") int id) {
    jdbcTemplate.update("delete from user where id = ? ", id);
    return "redirect:/sample";
}

template

src/main/resources/templates/sample/index.html


<a href="javascript:void(0);" onclick="destory_func();">Löschen</a>
function destory_func() {
    var form = document.createElement("form");
    var hidden = document.createElement("input");
    form.method = "post";
    form.action = "/sample/" + id;
    hidden.type = "hidden";
    hidden.name = "_method"
    hidden.value = "delete";
    form.appendChild(hidden);
    document.body.appendChild(form);
    form.submit();
}

Wie oben erwähnt, haben wir Controller und Vorlage gemäß 5 APIs implementiert. Ich gehe weiter, während ich mir einige Bücher und Framework-Programme anschaue, aber es ist interessant, sich nach und nach ein Gesamtbild der Software aus der Absicht der Implementierung zu machen.

In diesem Artikel wurden nur die für den Betrieb erforderlichen Teile extrahiert. Die Quelle ist jedoch unten angegeben. Wenn Sie sie benötigen, wenden Sie sich bitte an uns. github kaikusakari/spring_crud

Recommended Posts

Implementieren Sie CRUD mit Spring Boot + Thymeleaf + MySQL
Implementieren Sie die Paging-Funktion mit Spring Boot + Thymeleaf
Implementieren Sie GraphQL mit Spring Boot
Erstellen Sie eine CRUD-App mit Spring Boot 2 + Thymeleaf + MyBatis
Implementieren Sie eine einfache CRUD mit Go + MySQL + Docker
Führen Sie die WEB-Anwendung mit Spring Boot + Thymeleaf aus
Implementieren Sie einen einfachen Web-REST-API-Server mit Spring Boot + MySQL
Mit Spring Boot herunterladen
Versuchen Sie, die Anmeldefunktion mit Spring Boot zu implementieren
Erstellen Sie Ihr eigenes Dienstprogramm mit Thymeleaf mit Spring Boot
Einstellungen für die Verbindung zu MySQL mit Spring Boot + Spring JDBC
Hallo Welt mit Spring Boot
Beginnen Sie mit Spring Boot
Hallo Welt mit Spring Boot!
Führen Sie LIFF mit Spring Boot aus
SNS-Login mit Spring Boot
Implementieren Sie eine einfache Rest-API mit Spring Security mit Spring Boot 2.0
[Java] Thymeleaf Basic (Spring Boot)
Datei-Upload mit Spring Boot
Spring Boot beginnt mit dem Kopieren
Spring Boot beginnend mit Docker
Hallo Welt mit Spring Boot
Setzen Sie Cookies mit Spring Boot
Verwenden Sie Spring JDBC mit Spring Boot
Modul mit Spring Boot hinzufügen
Erste Schritte mit Spring Boot
Erstellen Sie mit Spring Boot einen Mikrodienst
Mail mit Spring Boot verschicken
Behandeln Sie die Java 8-Datums- und Uhrzeit-API mit Thymeleaf mit Spring Boot
Implementieren Sie die REST-API mit Spring Boot und JPA (Application Layer).
Bis INSERT und SELECT für Postgres mit Spring Boot und Thymianblatt
Stellen Sie mit spring boot + spring jpa eine Verbindung zur Datenbank her und führen Sie die CRUD-Operation durch
Verwenden Sie thymeleaf3 mit parent, ohne Spring-Boot-Starter-Parent in Spring Boot anzugeben
Implementieren Sie die REST-API mit Spring Boot und JPA (Domain Layer Edition).
Implementieren Sie eine einfache Rest-API mit Spring Security & JWT mit Spring Boot 2.0
Verwenden Sie die Standardauthentifizierung mit Spring Boot
Implementieren Sie einen Textlink mit Springboot + Thymeleaf
gRPC auf Spring Boot mit grpc-spring-boot-Starter
Erstellen Sie eine App mit Spring Boot 2
Hot Deploy mit Spring Boot-Entwicklung
Datenbankverknüpfung mit doma2 (Spring Boot)
Bis "Hallo Welt" mit Spring Boot
Erstellen Sie eine Anfrage-App mit Spring Boot
Implementieren Sie den Dateidownload mit Spring MVC
(Intellij) Hallo Welt mit Spring Boot
Erstellen Sie eine App mit Spring Boot
Implementieren Sie die REST-API mit Spring Boot
Google Cloud Platform mit Spring Boot 2.0.0
Implementieren Sie die Spring Boot-Anwendung in Gradle
Ich habe GraphQL mit Spring Boot ausprobiert
[Java] LINE-Integration mit Spring Boot
Beginnend mit Spring Boot 0. Verwenden Sie Spring CLI
Ich habe Flyway mit Spring Boot ausprobiert
Zertifizierung / Autorisierung mit Spring Security & Thymeleaf
Verwendung von Thymeleaf mit Spring Boot
Die Nachrichtenkooperation begann mit Spring Boot
Verarbeitung beim Starten einer Anwendung mit Spring Boot
Hallo Welt mit Eclipse + Spring Boot + Maven
Führen Sie einen Transaktionsbestätigungstest mit Spring Boot durch