Exemplo de aplicativo Spring Boot com Banco de Dados

Exemplo de aplicativo Spring Boot com Banco de Dados


Quer criar uma API com Spring Boot 3 e MYSQL?
Está cansado de criar APIs que só funcionam no localhost?

Nesse tutorial vamos aprenda a desenvolver, configurar e colocar online sua API em Spring Boot 3 com SSL e domínio personalizado. Tudo explicado de forma simples e prática!

1. Crie um arquivo no site abaixo o seu projeto spring boot

A. Acesse a url https://start.spring.io/
B. Gere o seu projeto Spring e clique no botão Generate.

2. Abra o seu projeto em sua IDEA de preferência.

3. A estrutura do projeto:

Vamos começar a criar o seu projeto.


1 Crie um arquivo .env na raiz do projeto

DB_HOST=panel.dominio.com.br
DB_PORT=3310
DB_NAME=bancocrud
DB_USERNAME=banconocrud
DB_PASSWORD=suasenha

2. Crie um arquivo .gitignore para evitar que ele seja empacotado o .env local

### Ignorar o arquivo .env na compilação
.env

3. Crie uma class CrudspringApplication

package host.integrator.crudspring;

import io.github.cdimascio.dotenv.Dotenv;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class CrudspringApplication {

  public static void main(String[] args) {
    Dotenv dotenv = Dotenv.configure()
        .directory("./")  // Define o diretório atual como local do .env
        .load(); // Carrega as variáveis do .env

    // Constrói a URL do banco de dados usando DB_HOST, DB_PORT e DB_NAME
    String dbUrl = String.format("jdbc:mysql://%s:%s/%s",
        dotenv.get("DB_HOST"),
        dotenv.get("DB_PORT"),
        dotenv.get("DB_NAME")
    );

    // Define as propriedades do sistema para o banco de dados
    System.setProperty("DB_URL", dbUrl);
    System.setProperty("DB_USERNAME", dotenv.get("DB_USERNAME"));
    System.setProperty("DB_PASSWORD", dotenv.get("DB_PASSWORD"));

    SpringApplication.run(CrudspringApplication.class, args);
  }
}

4. Configure o seu application.properties para receber os dados do seu .env

spring.config.import=optional:file:/app/.env
spring.datasource.url=${DB_URL}
spring.datasource.username=${DB_USERNAME}
spring.datasource.password=${DB_PASSWORD}
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQLDialect

5. Crie uma class respository

package host.integrator.crudspring.repository;

import host.integrator.crudspring.model.Usuario;
import org.springframework.data.jpa.repository.JpaRepository;

public interface UsuarioRepository extends JpaRepository<Usuario, Integer> {
}

6. Crie uma class Usuário

package host.integrator.crudspring.model;

import jakarta.persistence.*;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Entity
@Table(name = "usuarios") // Especifica o nome correto da tabela
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Usuario {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer id;

    private String nome;

    private String email;
}

7. Crie um class UsuarioController

package host.integrator.crudspring.Controller;


import host.integrator.crudspring.model.Usuario;
import host.integrator.crudspring.repository.UsuarioRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@RequestMapping("/api/usuarios")
public class UsuarioController {

    @Autowired
    private UsuarioRepository usuarioRepository;

    // Listar todos os usuários
    @GetMapping
    public List<Usuario> listarUsuarios() {
        return usuarioRepository.findAll();
    }

    // Obter um usuário por ID
    @GetMapping("/{id}")
    public ResponseEntity<Usuario> obterUsuarioPorId(@PathVariable Integer id) {
        return usuarioRepository.findById(id)
                .map(ResponseEntity::ok)
                .orElse(ResponseEntity.notFound().build());
    }

    // Criar um novo usuário
    @PostMapping
    public Usuario criarUsuario(@RequestBody Usuario usuario) {
        return usuarioRepository.save(usuario);
    }

    // Atualizar um usuário
    @PutMapping("/{id}")
    public ResponseEntity<Usuario> atualizarUsuario(@PathVariable Integer id, @RequestBody Usuario usuarioDetalhes) {
        return usuarioRepository.findById(id).map(usuario -> {
            usuario.setNome(usuarioDetalhes.getNome());
            usuario.setEmail(usuarioDetalhes.getEmail());
            Usuario usuarioAtualizado = usuarioRepository.save(usuario);
            return ResponseEntity.ok(usuarioAtualizado);
        }).orElse(ResponseEntity.notFound().build());
    }

    // Deletar um usuário
    @DeleteMapping("/{id}")
    public ResponseEntity<Void> deletarUsuario(@PathVariable Integer id) {
        if (usuarioRepository.existsById(id)) {
            usuarioRepository.deleteById(id);
            return ResponseEntity.noContent().build();
        } else {
            return ResponseEntity.notFound().build();
        }
    }


}

Vamos iniciar o projeto e fazer os testes de API usando o Postman

Listando os usuários

Inserir novo usuários

Buscar um usuário pelo ID

Remover um usuário pelo ID

Veja também o exemplo em video e como publicar em um domínio com ssl usando o nosso painel ICP