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
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 |
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
** 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