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