La dernière fois, j'ai écrit l'article suivant. Exécutez l'application WEB avec Spring Boot + Thymeleaf
Cette fois, avec la même configuration, accédez à l'application Web de type REST et exploitez les données dans la base de données. Ce sera une application qui affiche une liste d'enregistrements de table sur l'écran qui s'affiche en premier, puis enregistre les données, met à jour les données existantes et supprime les données existantes de cet écran. En plus de celle de l'article précédent, la configuration utilise MySQL pour la base de données. Dans cet article, la procédure de construction de MySQL est omise. De plus, le mappeur O / R n'est pas utilisé pour la connexion DB, seul JDBC est utilisé.
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
Créez 5 API comme suit
NO | METHOD url | mouvement |
---|---|---|
1 | GET /sample/ | Voir tous les tableaux |
2 | GET /sample/:id | id Se référer à 1 spécifié |
3 | POST /sample/ | Enregistrement d'enregistrement |
4 | PUT /sample/:id | 1 mise à jour d'enregistrement |
5 | DELETE /sample/:id | Supprimer 1 enregistrement |
Construisez l'API ci-dessus dans "SampleController.java" utilisé dans l'article précédent. Créez une table appelée user dans MySQL et manipulez les données de la table avec 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");
Fichier d'ajout / correction
** Définition de la table utilisateur **
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;
}
}
** OU définition de la carte ** Lorsque ResultSet.next () est bouclé avec while, le phénomène selon lequel le premier élément n'est pas lu ne peut pas être résolu et il est écrit directement avant la boucle.
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;
}
}
** Paramètres de connexion à la base de données **
src/main/resources/application.properties
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/Nom de la base de données
spring.datasource.username=Nom d'utilisateur
spring.datasource.password=mot de passe
spring.datasource.driver-class-name=org.gjt.mm.mysql.Driver
** Paramètres de dépendance **
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/ Obtient tous les enregistrements de la table utilisateur et les affiche dans une liste.
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>Nom</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 Obtient un enregistrement dans la table utilisateur.
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 Omis (identique à NO1)
3 POST /sample Enregistrez l'entrée dans la table des utilisateurs. Après l'enregistrement, vous pouvez obtenir la liste en vous redirigeant vers l'API NO1 et l'afficher à l'écran.
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="s'inscrire" />
</form>
4 PUT /sample/:id Mettez à jour les détails d'enregistrement existants. Après l'enregistrement, vous pouvez obtenir la liste en vous redirigeant vers l'API NO1 et l'afficher à l'écran.
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 Supprimez les détails d'enregistrement existants. Après l'enregistrement, vous pouvez obtenir la liste en vous redirigeant vers l'API NO1 et l'afficher à l'écran.
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();">Effacer</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();
}
Comme mentionné ci-dessus, nous avons implémenté un contrôleur et un modèle selon 5 API. Je continue en regardant quelques livres et programmes cadres, mais il est intéressant d'avoir une vue d'ensemble du logiciel petit à petit à partir de l'intention de mise en œuvre.
Cet article n'a extrait que les pièces nécessaires au fonctionnement, mais la source est ci-dessous, donc si vous en avez besoin, veuillez. github kaikusakari/spring_crud
Recommended Posts