Créons une application TODO en Java 6 Implémentation de la fonction de recherche

Bonjour. Cette fois, je voudrais implémenter la fonction de recherche au printemps.

Collection de liens de création d'application TODO

1: Brève description de MVC 2: Je veux créer un modèle avec Spring Initializr et créer un Hello world 3: Enregistrer les données temporaires dans MySQL-> Tout obtenir-> Afficher en haut 4: Implémentation de la fonction de publication 5: Changer l'affichage de TODO 6: Implémentation de la fonction de recherche (ici et maintenant)

Flux de mise en œuvre

Le mot de recherche est entré dans search.html

Le contrôleur reçoit le mot de recherche et l'envoie à la classe de service

Dans la classe de service, demandez au référentiel de traiter la recherche

Le référentiel renvoie le résultat au service

Le service renvoie les résultats au contrôleur

Le contrôleur renvoie les résultats dans search.html

Affiché sur html

C'est comme ...!

Modification de la classe du référentiel

@Repository
public interface TodoRepository extends JpaRepository<TodoEntity, Long> {

    //↓ Ajouter
    List<TodoEntity> findByTitleContaining(String searchWord);

}

Jpa dispose de plusieurs méthodes pratiques pour la recherche: FindByTitleContaining En faisant cela, la colonne de titre recherchera le libellé de l'argument.

Modifier la classe de service

   public List<TodoEntity> findToDoByTitle(String searchWord) {
        return todoRepository.findByTitleContaining(searchWord);
    }

Ajoutez cette fonction.

L'argument searchWord, qui est une chaîne de caractères, est envoyé à la fonction dans le référentiel précédent. La valeur de retour est List .

Édition du contrôleur

    @GetMapping("/search")
    public String showSearch() {
        return "search";
    }

    @GetMapping("/search/result")
    public String searchResult(Model model, @ModelAttribute TodoSearchForm searchForm) {
        List<TodoEntity> searchResult = todoService.findToDoByTitle(searchForm.getSearchWord());
        model.addAttribute("searchResults", searchResult);
        return "search";
    }

Ajoutez ces deux.

La partie supérieure / recherche affiche l'écran de recherche et la partie inférieure / serach / résultat est là pour afficher les résultats de la recherche.

Vous pouvez envoyer les données acquises vers le fichier html en utilisant model.addAtrribute (). Cette fois, nous envoyons un SearchResult de type List .

Créer une classe TodoSearchForm

Créez une classe de navires qui gèrent les caractères saisis pendant la recherche.

TodoSearchForm


package com.example.todo;

import lombok.Data;

import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;

@Data
public class TodoSearchForm {
    private Long id;
    @NotNull
    @Size(min = 0, max = 30)
    private String searchWord;
}

@Data est une annotation Lombok. Il omet les getters, les setters, etc. La chose importante cette fois est que vous pouvez stocker le mot de recherche de chaîne.

Création de search.html

<!DOCTYPE html>
<html lang="ja" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>hello</title>
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
</head><body>
<!-- Header -->
<div class="container mt-5">
    <form th:action="@{/search/result}" method="GET">
        <div class="row">
            <input type="text" name="searchWord" class="col-8">
            <button type="submit" class="ml-3 col-3 btn-primary w-25 btn-lg">Chercher</button>
        </div>
    </form>
</div>

<div th:if="!${#lists.isEmpty(searchResults)}" class="container mt-5">
    <p>Les résultats de la recherche sont<span  th:text="${#lists.size(searchResults)}"></span>Il y a des cas</p>
</div>

<div th:each="todo: ${searchResults}" class=" w-75 h-25 my-1 mx-auto pt-5">
    <div class="container">
        <div  class="row">
            <div class="col-5 pl-5">
                <p th:text="${todo.title}" class="mb-1"></p>
                <p class="mb-1">Date limite:<span  th:text="${todo.deadline}"></span></p>
                <p class="mb-1">Date de création:<span  th:text="${todo.createTime}"></span></p>
            </div>
            <div class="col-2 d-flex justify-content-start align-items-center px-0">
                <a th:href="@{/edit/{id}(id=${todo.id})}" class="h-100 w-75 btn btn-info pt-4">
Éditer
                </a>
            </div>
            <div th:if="${todo.status}" class="col-2 d-flex px-0">
                <div class="h-100 w-75 badge bg-success text-white d-flex align-items-center">
                    <h3 class=" my-1 mx-auto">Terminé</h3>
                </div>
            </div>
            <div th:unless="${todo.status}" class="col-2 d-flex px-0">
                <div class="h-100 w-75 badge bg-danger text-white d-flex align-items-center">
                    <h3 class=" my-1 mx-auto">Incomplet</h3>
                </div>
            </div>
        </div>
    </div>
</div>
<!--lire bootstrap js-->
<script src="https://code.jquery.com/jquery-3.4.1.slim.min.js" integrity="sha384-J6qa4849blE2+poT4WnyKhv5vZF5SrPo0iEjwBvKU7imGFAV0wwj1yYfoRSJoZ+n" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/umd/popper.min.js" integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo" crossorigin="anonymous"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js" integrity="sha384-wfSDF2E50Y2D1uUdj0O3uMBJnjuUD4Ih7YwaYd1iqfktj0Uod8GCExl3Og8ifwB6" crossorigin="anonymous"></script>
</body>
</html>

Le fait est que vous pouvez afficher le nombre de résultats de recherche en procédant comme suit!

<div th:if="!${#lists.isEmpty(searchResults)}" class="container mt-5">
    <p>Les résultats de la recherche sont<span  th:text="${#lists.size(searchResults)}"></span>Il y a des cas</p>
</div>

Résumé

Comment était-ce?

Je pense que le point important cette fois est le référentiel Jpa.

Il y a une référence dans ici, alors vérifiez-la. Je pense!

Recommended Posts

Créons une application TODO en Java 6 Implémentation de la fonction de recherche
Créons une application TODO en Java 4 Implémentation de la fonction de publication
Créons une application TODO en Java 8 Implémentation des fonctions d'édition
Créons une application TODO avec Java 1 Brève explication de MVC
Créons une application TODO en Java 5 Changer l'affichage de TODO
Implémentation d'une fonction similaire en Java
Créons une application TODO en Java 11 Gestion des exceptions lors de l'accès à un TODO avec un ID inexistant
Créer une application TODO dans Java 7 Créer un en-tête
Implémentation de la fonction de recherche
Créons un framework Web ultra-simple avec Java
Créons une application TODO dans Java 13 TODO form validation 1: Character limit-Update Gradle to use @Validated
Créons une application TODO avec Java 3 Enregistrez les données temporaires dans MySQL-> Tout obtenir-> Afficher en haut
Faisons une application de calculatrice avec Java ~ Créez une zone d'affichage dans la fenêtre
Implémentation de la fonction de recherche séquentielle
Implémentation Java de tri-tree
Créons une application TODO en Java 9 Créer un affichage TODO Trier par date et heure + Définir la date d'échéance sur la date actuelle
Faisons une application TODO avec Java 2 Je veux créer un modèle avec Spring Initializr et créer Hello world
Faisons une application de calcul avec Java ~ Afficher la fenêtre de l'application
Ajoutez une fonction de recherche dans Rails.
Créons une application TODO avec Java 12 Processing lorsqu'une requête arrive avec une HttpMethod inutilisée ・ Traitement lorsqu'une erreur se produit sur le serveur
[Procédure d'implémentation] Créer une fonction d'authentification utilisateur à l'aide de sorcellerie dans Rails
Implémentation de DBlayer en Java (RDB, MySQL)
Créons un environnement de développement Java (mise à jour)
Rôle de JSP dans les applications Web [Java]
Pour créer un fichier Zip lors du regroupement des résultats de recherche de base de données en Java
Volume d'essais pour créer une application Web Java sur Windows Server 2016
[Rails] Implémentation de la fonction de recherche en utilisant le ransack de gem
Créer une fonction d'authentification dans l'application Rails à l'aide de devise
Créer un CSR avec des informations étendues en Java
Avez-vous besoin d'une implémentation de Java compatible avec la mémoire?
Créons un processus chronométré avec la minuterie de Java! !!
[Java] Créez quelque chose comme une API de recherche de produits
Mesurer la taille d'un dossier avec Java
Essayez de créer un babillard en Java
Créer un onglet personnalisé avec SwiftUI 2.0
[Java] Créons un Minecraft Mod 1.14.4 [Introduction]
[JQuery] Procédure d'implémentation de la fonction de saisie semi-automatique [Java / Spring]
[Java] Créons un Minecraft Mod 1.16.1 [Introduction]
Faisons une fonction de recherche avec Rails (ransack)
Mise en place de la fonction de recherche Mémo d'apprentissage (création de portfolio)
Un examen rapide de Java appris en classe
[Java] Créons un Minecraft Mod 1.14.4 [99. Mod output]
Créons une bibliothèque d'opérations de stockage de fichiers polyvalente (?) En faisant abstraction du stockage / acquisition de fichiers avec Java
[Java] Créons un Minecraft Mod 1.14.4 [0. Fichier de base]
Implémentation de l'interpréteur par Java
[Java] Créons un Minecraft Mod 1.14.4 [4. Ajouter des outils]
Comment créer un environnement Java en seulement 3 secondes
Implémenter la fonction de recherche de publication dans l'application Rails (méthode where)
Un examen rapide de Java appris en classe part4
[Java] Créer un filtre
[Java] Créons un Minecraft Mod 1.14.4 [5. Ajouter une armure]
[Java] Créons un Minecraft Mod 1.14.4 [édition supplémentaire]
[Java] Créons un Minecraft Mod 1.14.4 [6. Ajouter une recette]
[Java] Créons un Minecraft Mod 1.16.1 [Ajouter un élément]
[Java] Créons un Minecraft Mod 1.16.1 [Fichier de base]
J'ai essayé de créer une compétence Clova en Java