Lassen Sie uns eine TODO-App in Java 6 erstellen. Implementierung der Suchfunktion

Hallo. Dieses Mal möchte ich die Suchfunktion im Frühjahr implementieren.

Linkerfassung zur Erstellung von TODO-Anwendungen

1: Kurze Beschreibung von MVC 2: Ich möchte eine Vorlage mit Spring Initializr erstellen und eine Hallo-Welt erstellen 3: Temporäre Daten in MySQL speichern-> Alle abrufen-> Oben anzeigen 4: Implementierung der Posting-Funktion 5: Schalten Sie die Anzeige von TODO um 6: Implementierung der Suchfunktion (hier und jetzt)

Implementierungsablauf

Das Suchwort wird in search.html eingegeben

Der Controller empfängt das Suchwort und sendet es an die Serviceklasse

Bitten Sie in der Serviceklasse das Repository um Suchverarbeitung

Das Repository gibt das Ergebnis an den Service zurück

Der Dienst gibt die Ergebnisse an die Steuerung zurück

Der Controller gibt die Ergebnisse in search.html zurück

Wird auf HTML angezeigt

Es ist wie ...!

Bearbeiten der Repository-Klasse

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

    //↓ Hinzufügen
    List<TodoEntity> findByTitleContaining(String searchWord);

}

Jpa verfügt über mehrere Methoden, die für die Suche geeignet sind. FindByTitleContaining Auf diese Weise sucht die Titelspalte nach dem Wortlaut im Argument.

Serviceklasse bearbeiten

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

Fügen Sie diese Funktion hinzu.

Das Argument searchWord, bei dem es sich um eine Zeichenfolge handelt, wird an die Funktion im vorherigen Repository gesendet. Der Rückgabewert ist List .

Controller bearbeiten

    @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";
    }

Fügen Sie diese beiden hinzu.

Die obere / Suche dient zur Anzeige des Suchbildschirms und die untere / serach / Ergebnis dient zur Anzeige der Suchergebnisse.

Sie können die erfassten Daten mithilfe von model.addAtrribute () an die HTML-Datei senden. Dieses Mal senden wir ein SearchResult vom Typ List .

Erstellen einer TodoSearchForm-Klasse

Erstellen Sie eine Schiffsklasse, die die während der Suche eingegebenen Zeichen verarbeitet.

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 ist eine Lombok-Anmerkung. Es werden Getter, Setter usw. weggelassen. Diesmal ist es wichtig, dass Sie das String-Suchwort speichern können.

Search.html erstellen

<!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">Suche</button>
        </div>
    </form>
</div>

<div th:if="!${#lists.isEmpty(searchResults)}" class="container mt-5">
    <p>Suchergebnisse sind<span  th:text="${#lists.size(searchResults)}"></span>Es gibt Fälle</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">Frist:<span  th:text="${todo.deadline}"></span></p>
                <p class="mb-1">Erstellungsdatum:<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">
Bearbeiten
                </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">Erledigt</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">Unvollständig</h3>
                </div>
            </div>
        </div>
    </div>
</div>
<!--Lesen Sie 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>

Der Punkt ist, dass Sie zeigen können, wie viele Suchergebnisse es gibt, indem Sie die folgenden Schritte ausführen!

<div th:if="!${#lists.isEmpty(searchResults)}" class="container mt-5">
    <p>Suchergebnisse sind<span  th:text="${#lists.size(searchResults)}"></span>Es gibt Fälle</p>
</div>

Zusammenfassung

Wie war es?

Ich denke, der wichtige Punkt ist diesmal das Jpa-Repository.

Es gibt eine Referenz in hier. Ich denke!

Recommended Posts

Lassen Sie uns eine TODO-App in Java 6 erstellen. Implementierung der Suchfunktion
Lassen Sie uns eine TODO-App in Java 4 erstellen. Implementierung der Buchungsfunktion
Lassen Sie uns eine TODO-App in Java 8 erstellen. Implementierung von Bearbeitungsfunktionen
Erstellen wir eine TODO-Anwendung mit Java 1 Kurze Erläuterung von MVC
Lassen Sie uns eine TODO-App in Java 5 erstellen. Schalten Sie die Anzeige von TODO um
Implementierung einer ähnlichen Funktion in Java
Erstellen wir eine TODO-Anwendung mit Java 11-Ausnahmebehandlung, wenn Sie mit einer nicht vorhandenen ID auf TODO zugreifen
Erstellen Sie eine TODO-App in Java 7 Create Header
Implementierung der Suchfunktion
Lassen Sie uns mit Java ein supereinfaches Webframework erstellen
Erstellen wir eine TODO-App in Java 13 TODO-Formularvalidierung 1: Zeichenbegrenzung · Gradle-Update zur Verwendung von @Validated
Erstellen wir eine TODO-App mit Java 3 Speichern Sie temporäre Daten in MySQL-> Get all-> Display on top
Erstellen wir eine Taschenrechner-App mit Java ~ Erstellen Sie einen Anzeigebereich im Fenster
Implementierung der sequentiellen Suchfunktion
Java-Implementierung von Tri-Tree
Erstellen wir eine TODO-App in Java 9 Erstellen einer TODO-Anzeige Sortieren nach Datum und Uhrzeit + Setzen Sie das Fälligkeitsdatum auf das aktuelle Datum
Lassen Sie uns eine TODO-Anwendung mit Java 2 erstellen. Ich möchte eine Vorlage mit Spring Initializr erstellen und eine Hello-Welt erstellen
Erstellen wir eine Taschenrechner-App mit Java ~ Zeigen Sie das Anwendungsfenster an
Fügen Sie eine Suchfunktion in Rails hinzu.
Erstellen wir eine TODO-Anwendung mit Java 12-Verarbeitung, wenn eine Anforderung mit einer nicht verwendeten HttpMethod eingeht. ・ Verarbeitung, wenn ein Fehler auf dem Server auftritt
[Implementierungsverfahren] Erstellen Sie eine Benutzerauthentifizierungsfunktion mithilfe von Hexerei in Rails
Implementierung von DBlayer in Java (RDB, MySQL)
Lassen Sie uns eine Java-Entwicklungsumgebung erstellen (Aktualisierung)
Rolle von JSP in Webanwendungen [Java]
So erstellen Sie eine Zip-Datei beim Gruppieren von Datenbanksuchergebnissen in Java
Umfang des Versuchs, eine Java-Webanwendung unter Windows Server 2016 zu erstellen
[Rails] Implementierung der Suchfunktion mit Gem's Ransack
Erstellen Sie die Authentifizierungsfunktion in der Rails-Anwendung mit devise
Erstellen Sie eine CSR mit erweiterten Informationen in Java
Benötigen Sie eine speicherbewusste Implementierung von Java?
Lassen Sie uns mit Javas Timer einen zeitgesteuerten Prozess erstellen! !!
[Java] Erstellen Sie so etwas wie eine Produktsuch-API
Messen Sie die Größe eines Ordners mit Java
Versuchen Sie, ein Bulletin Board in Java zu erstellen
Erstellen Sie mit SwiftUI 2.0 eine benutzerdefinierte Registerkartenansicht
[Java] Erstellen wir einen Minecraft Mod 1.14.4 [Einführung]
[JQuery] Implementierungsverfahren der AutoComplete-Funktion [Java / Spring]
[Java] Erstellen wir einen Minecraft Mod 1.16.1 [Einführung]
Lassen Sie uns eine Suchfunktion mit Rails (Ransack) machen
Implementierung der Suchfunktion Lernnotiz (Portfolioerstellung)
Ein kurzer Überblick über Java, das im Unterricht gelernt wurde
[Java] Erstellen wir einen Minecraft Mod 1.14.4 [99. Mod-Ausgabe]
Erstellen wir eine vielseitige Dateispeicher (?) - Operationsbibliothek, indem wir die Dateispeicherung / -erfassung mit Java abstrahieren
[Java] Erstellen wir einen Minecraft Mod 1.14.4 [0. Basisdatei]
Interpreter-Implementierung durch Java
[Java] Erstellen wir einen Minecraft Mod 1.14.4 [4. Tools hinzufügen]
So erstellen Sie eine Java-Umgebung in nur 3 Sekunden
Implementieren Sie die Nachsuchfunktion in der Rails-Anwendung (where-Methode).
Ein kurzer Überblick über Java, das in Klasse 4 gelernt wurde
[Java] Erstellen Sie einen Filter
[Java] Lass uns einen Minecraft Mod 1.14.4 erstellen [5. Rüstung hinzufügen]
[Java] Erstellen wir einen Minecraft Mod 1.14.4 [Extra Edition]
[Java] Erstellen wir einen Minecraft Mod 1.14.4 [6. Rezept hinzufügen]
[Java] Erstellen wir einen Minecraft Mod 1.16.1 [Element hinzufügen]
[Java] Erstellen wir einen Minecraft Mod 1.16.1 [Basisdatei]
Ich habe versucht, eine Clova-Fähigkeit in Java zu erstellen