Springboot + mongodb + thymeleaf project desde cero

Descripción

Este artículo es solo una introducción muy simple, springboot + mongodb + thymeleaf es
solo para referencia, si hay un error, corríjame

=====================================

1. Crea un proyecto maven
2. Importa las dependencias relacionadas

<dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-mongodb</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
    </dependencies>

Tres, escribe el archivo de propiedades

spring.data.mongodb.uri=mongodb://127.0.0.1:27017
spring.data.mongodb.database=coffee

Asegúrese de que mongodb esté encendido

Cuarto, escribir clases de entidad

package com.pojo;

import lombok.Getter;
import lombok.Setter;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;
import org.springframework.data.mongodb.core.mapping.Field;

@Setter
@Getter
@Document("product")
public class Products {
    
    

//    @Id的作用的指定id,避免和下面的那个重复
    @Id
    private Object _id;

    @Field
    private double id;
    private String name;
    private String describe;
    private String introduce;
    private String descriptor;
    private String[] picture;
    private String type;
    private double deleted;

    public Products(Object _id, double id, String name, String describe, String introduce, String descriptor, String[] picture, String type, double deleted) {
    
    
        this._id = _id;
        this.id = id;
        this.name = name;
        this.describe = describe;
        this.introduce = introduce;
        this.descriptor = descriptor;
        this.picture = picture;
        this.type = type;
        this.deleted = deleted;
    }

    public Products() {
    
    
    }
}

Nota: La clase de entidad debe corresponder al nombre de la colección correspondiente, si no corresponde es necesario agregarlo @Document("集合名称")para indicarlo.
@IdLa función es: debido a que el atributo id está personalizado, la anotación se agrega para indicar que "_id" es la clave principal.
@FieldLa función es: si el nombre del campo es "nombre_usuario", pero la clase de entidad escribe "nombre_usuario", agregue esta anotación y compile automáticamente "nombre_usuario" en "nombre_usuario" al compilar.

Cinco, escriba la
interfaz de definición de capa de persistencia (servicio)

package com.dao;

import com.pojo.Products;
import org.springframework.stereotype.Repository;

import java.util.List;

@Repository
public interface ProductDao{
    
    
    public List<Products> findAll();
    public void insert(Products product);
    public void delete(String id);
    public void update(Products product);

}

@Repository se usa en la interfaz de la capa de persistencia Esta anotación es para dar una clase de implementación de la interfaz a Spring para su administración.

Seis, implementa la interfaz`

package com.service;

import com.dao.ProductDao;
import com.pojo.Products;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class ProductService implements ProductDao {
    
    
    @Autowired
    MongoTemplate mongoTemplate;

    @Override
    public List<Products> findAll() {
    
    
        List<Products> list = mongoTemplate.findAll(Products.class);
        for (Products pro : list) {
    
    
            System.out.println("========>>>" + pro);
        }
        System.out.println("执行了service ==> findAll方法");
        return list;
    }

    @Override
    public void insert(Products product) {
    
    
        mongoTemplate.insert(product);
    }

    @Override
    public void delete(String id) {
    
    
        mongoTemplate.remove(id);
    }

    @Override
    public void update(Products product) {
    
    
        mongoTemplate.save(product);
    }
}

@ServiceLa función es: si una clase está anotada con @Service, se registrará automáticamente en el contenedor Spring.
@AutowiredEl papel de es: anotar variables de miembros de clase, métodos y constructores, y dejar que Spring complete el trabajo del ensamblaje automático de beans.

Siete, escribe la capa de control

package com.controller;

import com.pojo.Products;
import com.service.ProductService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;

import java.util.List;

@Controller
public class ProductController {
    
    

    @Autowired
    ProductService productService;

    @RequestMapping("/productPreview")
    public String toProductPreview(Model model){
    
    
        List<Products> list=productService.findAll();
        model.addAttribute("list",list);
        System.out.println("总长度:"+list.size());
        for(Products pro:list){
    
    
            System.out.println("========>>>"+pro);
        }
        return "productPreview";
    }
}

@ControllerEl rol de es: usado para marcar una clase, la clase marcada con él es un objeto Controlador SpringMVC. El procesador de despacho escaneará el método de la clase que usa la anotación y detectará si el método usa la anotación @RequestMapping.
@RequestMappingEl rol: se utiliza para procesar las anotaciones de la asignación de direcciones solicitada. El punto simple es que el objeto de controlador correspondiente (señal de tráfico) se puede encontrar accediendo a la dirección en los corchetes de comentarios.

Ocho, escribe la página html

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.w3.org/1999/xhtml">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<table>
    <tr>
        <td>id</td>
        <td>名字</td>
        <td>短评</td>
        <td>简介</td>
        <td>价格</td>
        <td>假删除</td>
        <td>类型</td>
    </tr>

    <tr th:each="pro : ${list}">
        <td th:text="${pro.id}">id</td>
    </tr>

</table>
</body>
</html>

xmlns:th="http://www.w3.org/1999/xhtml": Xmlns es en realidad una abreviatura de XML NameSpace. Indica la definición de dónde proviene la etiqueta xml utilizada aquí.

th:each="pro : ${list}: Sintaxis Thymeleaf, que se utiliza para recorrer la lista / matriz obtenida del backend.
th:text="${pro.id}": Sintaxis Thymeleaf, utilizada para obtener el atributo id del objeto obtenido en la lista.
Nota: El nombre de esta página corresponde al valor de retorno de la capa del controlador.

该页面的名字为:productPreview

controller层:
@RequestMapping("/productPreview")
    public String toProductPreview(Model model){
        List<Products> list=productService.findAll();
        model.addAttribute("list",list);
        System.out.println("总长度:"+list.size());
        for(Products pro:list){
            System.out.println("========>>>"+pro);
        }
        

        return "productPreview"; 
    }

Nueve, captura de pantalla
Inserte la descripción de la imagen aquí
mongodb
Inserte la descripción de la imagen aquí

En este punto, puede escribir un proyecto springboot + mongodb + thymeleaf muy simple. Este artículo solo proporciona ideas para la referencia de amigos de mongodb de integración de springboot que no tienen ni idea; más páginas exquisitas deben ser exploradas por mí mismo, después de todo, también soy un error de Baidu por un día para hacer algo tan simple. Los frutos de mis propios esfuerzos son los más fragantes.
Finalmente, si hay errores o deficiencias en el texto, deje un mensaje para corregirlo.

Supongo que te gusta

Origin blog.csdn.net/weixin_44048668/article/details/111770617
Recomendado
Clasificación