Exemplos de CRUD - raialmeida/mindqa-db-commons GitHub Wiki

Exemplos de CRUD

DatabaseService.select(sql, params) retorna List<Map<String, Object>>.

DatabaseService.execute(sql, params) executa INSERT, UPDATE ou DELETE e retorna a quantidade de linhas afetadas. Os dois primeiros exemplos pressupõem registros existentes; o primeiro usa uma tabela SQL Server. Para usar outra base da conexão padrão:

import io.mindqa.database.DatabaseService;

import java.util.List;
import java.util.Map;

import static org.junit.jupiter.api.Assertions.assertEquals;

List<Map<String, Object>> produtos = DatabaseService.database("ServeRestExemplo")
        .select("SELECT Id, Nome, Preco FROM dbo.Produtos WHERE Id = ?", "produto-002");
assertEquals(1, produtos.size());

Para outra base de uma conexão nomeada, selecione a conexão e a base:

import io.mindqa.database.DatabaseService;

import java.util.List;
import java.util.Map;

import static org.junit.jupiter.api.Assertions.assertEquals;

String id = "cliente-1";
List<Map<String, Object>> clientes = DatabaseService.connection("postgresql")
        .database("qa_clientes")
        .select("SELECT * FROM clientes WHERE id = ?", id);
assertEquals(1, clientes.size());

int removidos = DatabaseService.connection("postgresql")
        .database("qa_clientes")
        .execute("DELETE FROM clientes WHERE id = ?", id);
assertEquals(1, removidos);

Falhas JDBC lançam DatabaseException, com a mesma mensagem do driver e a SQLException original disponível em getCause() e getSQLException().

Use sempre placeholders ? para valores e passe os parâmetros separadamente.

Ciclo completo

Use os nomes ou aliases das colunas para acessar os valores do mapa.

O exemplo usa a conexão padrão e valores parametrizados. Adapte a tabela aos campos da sua aplicação; os IDs deste exemplo são strings. Em testes reais, coloque a limpeza no teardown para executá-la mesmo se uma asserção falhar, como em Validação no banco.

import io.mindqa.database.DatabaseService;

import java.util.List;
import java.util.Map;
import java.util.UUID;

import static org.junit.jupiter.api.Assertions.assertEquals;

String id = UUID.randomUUID().toString();
String email = "qa-" + id + "@example.com";

int inseridos = DatabaseService.execute(
        "INSERT INTO clientes (id, nome, email) VALUES (?, ?, ?)",
        id, "Cliente QA", email);

assertEquals(1, inseridos);

List<Map<String, Object>> clientes = DatabaseService.select(
        "SELECT id, nome, email FROM clientes WHERE id = ?", id);

assertEquals(1, clientes.size());
assertEquals("Cliente QA", clientes.get(0).get("nome"));
assertEquals(email, clientes.get(0).get("email"));

int atualizados = DatabaseService.execute(
        "UPDATE clientes SET nome = ? WHERE id = ?", "Cliente atualizado", id);
int removidos = DatabaseService.execute("DELETE FROM clientes WHERE id = ?", id);

assertEquals(1, atualizados);
assertEquals(1, removidos);

select retorna uma lista vazia quando não encontra linhas. Confira Métodos da biblioteca para os demais métodos e os tratamentos de erros.