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.