Pré-requisitos do Ambiente
Para seguir este guia, certifique-se de ter as seguintes ferramentas configuradas:
- IDE: IntelliJ IDEA (versão 2023.3 ou superior)
- JDK: Versão 17
- Banco de Dados: MySQL 8.0+
Inicializando o Projeto Spring Boot
Existem dois caminhos principais para iniciar um projeto: via Spring Initializr (automatizado) ou Maven Archetype (manual).
Abordagem 1: Usando Spring Initializr
No IntelliJ, selecione a opção de novo projeto com Spring Initializr. Configure o tipo como Maven, selecione o Java 17 e a versão estável mais recente do Spring Boot 3. Na seção de dependências, adicione Spring Web.
Após a criação, valide a estrutura criando um endpoint simples de teste em um novo pacote controller:
@RestController
@RequestMapping("/api/v1")
public class CheckController {
@GetMapping("/status")
public String checkStatus() {
return "Aplicação rodando com sucesso!";
}
}
Abordagem 2: Configuração Manual com Maven
Se preferir criar um projeto Maven simples (quickstart), você precisará definir o parent e as dependências manualmente no seu arquivo pom.xml:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.4.1</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
Em seguida, crie a classe principal da aplicação:
@SpringBootApplication
public class CustomApplication {
public static void main(String[] args) {
SpringApplication.run(CustomApplication.class, args);
}
}
Configurando o MyBatis-Plus e Conexão com Banco de Dados
Para integrar a camada de persistência, adicione as seguintes bibliotecas ao seu pom.xml:
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-spring-boot3-starter</artifactId>
<version>3.5.8</version>
</dependency>
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
Configure a conexão no arquivo src/main/resources/application.yml:
spring:
datasource:
url: jdbc:mysql://localhost:3306/empresa_db?useSSL=false&serverTimezone=UTC
username: root
password: sua_senha_aqui
driver-class-name: com.mysql.cj.jdbc.Driver
Estrutura de Dados e Persistência
Crie uma tabela de exemplo no MySQL para representar colaboradores:
CREATE DATABASE empresa_db;
USE empresa_db;
CREATE TABLE colaborador (
id_colaborador INT PRIMARY KEY,
nome_completo VARCHAR(100),
cargo VARCHAR(50),
salario DECIMAL(10,2)
);
INSERT INTO colaborador VALUES (1, 'Alice Silva', 'Desenvolvedora', 8500.00);
INSERT INTO colaborador VALUES (2, 'Bruno Costa', 'Analista de QA', 6200.00);
Definição da Entidade
Utilize o Lombok para reduzir o código boilerplate da classe Colaborador:
@Data
@TableName("colaborador")
public class Colaborador {
@TableId
private Integer idColaborador;
private String nomeCompleto;
private String cargo;
private Double salario;
}
Implementação das Camadas Mapper e Service
Com o MyBatis-Plus, a interface Mapper herda funcionalidades de CRUD automaticamente:
@Mapper
public interface ColaboradorMapper extends BaseMapper<Colaborador> {
}
A camada de serviço utiliza as extensões do MyBatis-Plus para facilitar operações complexas:
// Interface
public interface ColaboradorService extends IService<Colaborador> {
}
// Implementação
@Service
public class ColaboradorServiceImpl extends ServiceImpl<ColaboradorMapper, Colaborador> implements ColaboradorService {
}
Disponibilizando os Dados via API
Por fim, crie um controller para listar os registros do banco de dados:
@RestController
@RequestMapping("/colaboradores")
public class ColaboradorController {
@Autowired
private ColaboradorService colaboradorService;
@GetMapping("/listar")
public List<Colaborador> obterTodos() {
return colaboradorService.list();
}
}
Ao iniciar a aplicação e acessar localhost:8080/colaboradores/listar, o sistema retornará o JSON contendo os dados recuperados do MySQL através do MyBatis-Plus.