Versões comparadas
Chave
- Esta linha foi adicionada.
- Esta linha foi removida.
- A formatação mudou.
Para criar as consultas ao banco de dados, o Cronapp utiliza um assistente de consulta visual, que facilita a criação de consultas ao banco de dados.
Visão Geral
Âncora | ||||
---|---|---|---|---|
|
As consultas são realizadas em JPQL (Java Persistence Query Language), que é uma linguagem de consulta ORM que atua sobre classes e objetos, diferentemente do SQL que realiza as consultas baseadas em tabelas. Apesar de a diferença estrutural, a linguagem JPQL é bem semelhante ao SQL, porém a primeira possui a vantagem de que a mesma consulta pode ser realizada em todos os bancos de dados.
O Cronapp possui um Assistente de consulta visual para facilitar a criação de consultas JPQL. O assistente de consulta é utilizado tanto em blocos de programação quanto em fontes de dados, mas existem pequenas diferenças entre o assistente de consulta do bloco e da fonte de dados. O assistente permite criar consultas de forma visual (low-code) ou manual (high-code).
Figura 1.1 - Assistente de consulta visual (Bloco de programação)
- Estrutura de Consulta: Possui as opções para a criação da consulta, como selecionar as entidades, campos, criar regras e outros.
- Modo de Consulta: Altera a exibição dos dados em modo de teste da consulta, que pode ser por tabelas ou objetos (Figuras 1.2 e 1.3).
- Aplicar dados da requisição: Aplica as requisições (paginação, ordenação e outros) diretamente na consulta (ver mais detalhes em aqui).
- Habilitar Paginação: Realiza a paginação dos dados em uma página de forma automática (ver mais detalhes em aqui).
- Testar Consulta: Exibe o resultado da consulta criada em uma nova janela, altere o campo Modo de Consulta para modificar a forma de exibição (Figuras 1.2 e 1.3).
- Editar como Texto: Muda a janela para editar a consulta manualmente (high-code). Após alterar uma consulta manualmente, não será possível editar novamente em modo visual.
- Visualizar como Texto: Exibe a consulta feita no formato visual em forma de texto.
- OK e Cancelar: Salva ou cancela a consulta.
Figura 1.2 - Exibição de consulta em modo objetos
Figura 1.3 - Exibição de consulta em modo tabela
Estrutura da consulta
Agora vamos entender melhor as opções disponíveis na estrutura da consulta.
Figura 2.1 - Estrutura visual da consulta
- Entidade: Adiciona as entidades que farão parte da consulta.
- Campos: Define quais campos serão buscados na consulta.
- Regras: Regra que será considerada ao buscar os dados no banco.
- Agrupar: Agrupa linhas que têm os mesmos valores.
- Having: Cria regras para serem usadas juntos com os campos agrupados.
- Ordenar: Define a ordem em que os dados serão retornados.
Âncora Consulta_Entidade Consulta_Entidade
Entidade
Adiciona as entidades que farão parte da consulta. Equivale a seleção de tabelas após sentença "FROM
" em uma consulta SQL.
Em consultas JPQL não é necessário usar o "JOIN
", pois na área de seleção dos campos já mapeia todos os campos das entidades relacionadas. Exemplo: Entidade A
tem relação com B
, a entidade B
tem relação com C
e C
possui um campo chamado "nome
", dessa forma, basta selecionar a entidade A e na área Campos (abaixo) selecionar a opção "A.B.C.nome
", criando um JOIN
automaticamente.
Figura 2.2 - Área de seleção das entidades
- Entidade: Exibe a entidade recém selecionada.
- " ... " : Abre a janela para seleção da entidade.
- Alias: Permite adicionar um apelido.
- + Adicionar: Adiciona a entidade selecionada a consulta.
- Excluir: Exclui entidade adicionada.
- Exibe a entidade selecionada.
- Exibe o alias da entidade selecionada,
Para adicionar as entidades que farão parte da consulta, clique no botão "...", selecione a classe desejada e finalize clicando em "+ Adicionar".
Âncora Consulta_Campos Consulta_Campos
Campos
Define quais campos serão buscados na consulta. Equivale a seleção dos campos das tabelas após sentença "SELECT
" em uma consulta SQL.
Figura 2.3 - Área de seleção dos campos
É possível adicionar os campos desejados através do botão "Novo Campo" ou adicionar todos os campos da entidade de uma só vez clicando em "Adicionar Todos".
- + Novo Campo: Adiciona um novo campo na consulta.
- + Adicionar Todos: Insere todos os campos das entidades selecionadas.
- Excluir: Exclui o campo.
- Tipo de retorno: Define como o valor do campo será retornado. Os tipos são:
- Obter: Retorna o valor do campo como está no banco;
- MIN: Retorna o menor valor dos campos;
- MAX: Retorna o maior valor dos campos;
- AVG: Retorna a média aritmética dos valores dos campos registrados no banco;
- SUM: Retorna a soma dos valores do campo;
- COUNT: Retorna a quantidade de registros do campo.
- Campo selecionado: Seleciona qual o campo será consultado.
Ao selecionar somente o alias (exemplo do campo "lg" na imagem 2.3) a consulta retorna todos os campos, nesse caso, não seria necessário selecionar o segundo campo "lg.providerDisplayName".
Não é necessário fazer JOIN
em consultas JPQL, o exemplo do campo "lg.user.name" retornará o nome do usuário que faz relação com o login selecionado.
Âncora Consulta_Regras Consulta_Regras
Regras
Nessa propriedade é definida a regra que será considerada ao buscar os dados no banco. Por meio do botão "Nova Regra" é possível adicionar regras e selecionar um condicional único entre as regras ou adicionar vários grupos de regras e selecionar condicionais para cada grupo individualmente através do botão "Novo Grupo". Equivale ao filtro após sentença "WHERE
" em uma consulta SQL.
Figura 2.4 - Área de seleção das regras da consulta
- Negação e operador lógico: nega a sentença vinculada, adicionando um "not" antes, e define se o operador lógico entre as sentenças vinculadas será "e" ou "ou".
- Inverter: alterna o operador lógico e os campos condicionais das sentenças vinculadas, por exemplo: se estiver selecionado "ou", será substituído por "e", isso também ocorrerá no campo condicional (campo 4 da figura 2.4), que alternará de "igual" para "diferente".
- Campo da entidade: campo da entidade que será utilizado para a criação da regra.
- Condição: define a condição que deve existir entre o campo e o parâmetro, são elas
- Igual;
- diferente;
- contido;
- não contido;
- iniciando com;
- não iniciando com;
- contém;
- não contém;
- terminando com;
- terminado sem;
- é vazio;
- não é vazio;
- é nulo;
- não é nulo.
- Parâmetro: Define-se o nome do parâmetro que será comparado com o campo da entidade. É possível inserir o conteúdo literal, ou definir uma variável que será passada por parâmetro, adicionando ":" (dois pontos) na frente da variável.
↑ ↓ : Permite arrastar uma regra ou grupo para dentro de um grupo ou ordená-los,
A regra (where) definido na figura 2.4 ficará da seguinte forma:
Bloco de código | ||||
---|---|---|---|---|
| ||||
WHERE usr.name = :name AND (NOT (lg.user.phoneNumber LIKE (CONCAT('%', '(71)', '%')) )) |
Âncora Consulta_Agrupar Consulta_Agrupar
Agrupar
Possui a função de agrupar linhas que têm os mesmos valores em um ou mais campos específicos. Equivale a sentença "GROUP BY
" em uma consulta SQL.
Figura 2.5 - Área de seleção do Agrupar
- Campo a ser agrupado: Seleciona qual o campo será agrupado.
- + Novo Campo: Adiciona outro campo para agrupar.
- Excluir: exclui o campo selecionado.
Âncora Consulta_Having Consulta_Having
Having
A propriedade having funciona de forma semelhante a propriedade Regra, entretanto ela cria uma regra para os grupos criados com a propriedade agrupar. Por isso, o having sempre deve ser usado junto com o agrupar.
Figura 2.6 - Área de seleção das regras do Having
- Tipo de dados da condição: É definido qual o tipo será retornado do banco para ser comparado na regra criada pelo having. Os tipos são:
- MIN: Retorna o menor valor dos campos;
- MAX: Retorna o maior valor dos campos;
- AVG: Retorna a média aritmética dos valores do campo registrados no banco;
- SUM: Retorna a soma dos valores dos campos e
- COUNT: Retorna a quantidade de registros do campo.
- Campo: Campo usado para a comparação com o parâmetro.
- Condição: Condição que será utilizado para comparar o valor obtido no campo e o parâmetro. São eles:
- Igual;
- Diferente;
- Menor;
- Menor ou igual;
- Maior;
- Maior ou igual.
- Parâmetro: Valor que será comparado com o tipo de dado retornado.
Âncora Consulta_Ordenar Consulta_Ordenar
Ordenar
Nessa opção é definida a ordem de retorno dos itens. Por exemplo, é possível trazer os dados organizados do menor id para o maior ou o contrário.
Figura 2.7 - Área de ordenação da consulta
- Tipo de dado: Define qual o tipo de dado que será utilizado para ordenar os dados.
- Obter: Retorna o valor do campo como está no banco;
- MIN: Retorna o menor valor dos campos;
- MAX: Retorna o maior valor dos campos;
- AVG: Retorna a média aritmética dos valores dos campos registrados no banco;
- SUM: Retorna a soma dos valores do campo;
- COUNT: Retorna a quantidade de registros do campo.
- Campo: Campo que será utilizado para a ordenação.
- Tipo de ordenação: Define o tipo de ordenação que será considerada na propriedade.
- Asc: Ascendente;
- Desc: Descendente.
Diferença entre consultas: Visual, JPQL e SQL
Como informado anteriormente, o Assistente de consulta visual gera uma consulta em JPQL que se parece muito com consultas SQL. Veja abaixo uma imagem representando uma consulta usando o Assistente Visual (Figura 3.1), a consulta JPQL gerada pelo Assistente visual e o equivalente em MySQL.
O JPA/JPQL não possui suporte para UNION
, INTERSECT
e EXCEPT
, dessa forma, consultas mais complexas necessitam dessas funcionalidades, use o modo high code (código), clicando no botão Visualizar como Texto.
Figura 3.1 - Exemplo de consulta visual
A consulta gerada pela configuração do assistente visual da Figura 3.1:
Bloco de código | ||||||
---|---|---|---|---|---|---|
| ||||||
SELECT c.estado.nome FROM Cidade c WHERE c.quantidadeHabitantes <> :minimo GROUP BY c.nome HAVING SUM(c.quantidadeHabitantes) > :quantidadeHabitantes ORDER BY c.estado ASC |
Exemplo da mesma consulta feita para o MySQL:
Bloco de código | ||||||
---|---|---|---|---|---|---|
| ||||||
SELECT c.nome FROM db_componentesvisuais2.CIDADE c JOIN db_componentesvisuais2.ESTADO e on c.fk_estado = e.id WHERE c.quantidadehabitantes <> '%minimo%' GROUP BY c.nome HAVING SUM(c.quantidadehabitantes) > '%quantidadeHabitantes%' ORDER BY e.id ASC |
Âncora Diferença Diferença
Fonte de dados vs Bloco de programação
Diferença | |
Diferença |
Existem duas formas de obter dados para alimentar uma Fonte de dados:
- Selecionar uma Entidade e criar um filtro através do Assistente de consulta na aba Filtro da Fonte de dados ou
- Alimentar a Fonte de dados através do bloco de programação Abrir consulta e usar o Assistente de consulta do próprio bloco (Figura 4.1).
Figura 4.1 - Fonte de dados alimentada por bloco de programação com opção Habilitar paginação ativa
O Assistente de consulta visual possui duas funcionalidades a mais quando aberto pelo bloco de programação, essas duas funcionalidades são: Aplicar Dados da Requisição e Habilitar Paginação. (Figuras 4.2).
Figura 4.2 - Assistente de Consulta Visual aberto via Bloco de programação
Figura 4.3 - Assistente de Consulta Visual aberto via Fonte de dados
Aplicar dados da requisição
O Cronapp permite uso de um bloco como fonte de dados. Na maioria das vezes, o intuito é usar uma consulta com a função "Abrir Consulta". Nas versões anteriores existia uma opção chamada Paginação Automática. Essa opção aplicava os dados de paginação da requisição da fonte de dados à consulta. O Cronapp evoluiu essa opção que passou a se chamar Aplicar Dados da Requisição. Essa opção agora aplica paginação, ordenação, filtros e qualquer outro dado da requisição ODATA à consulta. Com isso, todas as operações de interface serão enviadas à consulta, fazendo com que a fonte de dados funcione integralmente com a consulta do Bloco de Programação.
Habilitar paginação
Caso queira paginar os dados exibidos na tela, utilize o bloco Abrir consulta e selecione a opção Habilitar paginação, ao fazer isso, o bloco exibirá os parâmetros limit e offset (Figura 4.1).
- limit: define a quantidade de linhas retornadas na consulta;
- offset: define a partir de qual linha retornará.
Exemplo: Em uma consulta com 100 registros, ao inserir os parâmetros limit com 20 e o offset com 10, o resultado retornará do registro 10 até o 30.
Blocos que utilizam o Assistente visual JPQL
A estrutura do Assistente visual da figura 3.1 é exibida apenas para o bloco Abrir consulta, os blocos Inserir, Atualizar e Remover possuem diferenças em sua estrutura. Acesse os links abaixo para mais detalhes.
Figura 5.1 - Blocos que utilizam o Assistente de consulta visual
Blocos do tipo servidor de acesso ao banco de dados:
- Inserir: Adiciona uma nova entidade ao banco de dados por meio do assistente visual do JPQL ( consulte mais detalhes aqui), para saber mais sobre o bloco clique aqui.
- Abrir consulta: Realiza uma consulta no banco de dados por meio do assistente visual do JPQL (consulte mais detalhes aqui)
- , para saber mais sobre o bloco clique aqui.
- Atualizar: Atualiza uma entidade no banco de dados por meio do assistente visual JPQL (consulte mais detalhes aqui)
- , para saber mais sobre o bloco clique aqui.
- Remover: Remove uma entidade do banco de dados por meio do assistente visual JPQL (consulte mais detalhes aqui).
- , para saber mais sobre o bloco clique aqui.
- Criar entidade: Cria um objeto para usar junto a um dos blocos acima. para saber mais sobre o bloco clique aqui.
Bloco Inserir
A inserção de um dado através do bloco pode ser de dois tipos: objeto (Figura 5.2.1 e 5.2.2) e campos (Figura 5.2.3 e 5.2.4). Para ela ocorrer por objeto, selecione a entidade, salve (Figura 5.2.1) e passe o objeto contendo os dados da entidade (Figura 5.2.2).
Image Added
Figura 5.2.1 - Adicionando uma entidade como objeto
Image Added
Figura 5.2.2 - Passando objeto ao bloco inserir
No caso da inserção através dos campos, clique no botão Novo Campo para adicionar os campos da entidade. Após a definição da entidade e dos campos, o bloco de programação exibido na função passa a apresentar parâmetros de entrada referentes ao campos adicionados (Figuras 5.2.3 e 5.2.4).
Image Added
Figura 5.2.3 - Adicionando os campos da entidade
Image Added
Figura 5.2.4 - Passando os dados para os parâmetros do bloco
Bloco Atualizar
Assim como a inserção, a atualização pode ser de dois tipos: objeto (Figura 5.3.1 e 5.3.2) e campos (Figura 5.3.3 e 5.3.4). Para a atualização ocorrer por objeto, selecione a entidade na janela de configuração do bloco (botão "..."), clique em OK e passe o objeto contendo os dados que serão atualizados.
Image Added
Figura 5.3.1 - Adicionando uma entidade como objeto
Image Added
Figura 5.3.2 - Passando objeto modificado ao bloco atualizar
Para que a atualização seja do tipo campos, será necessário definir os campos que serão atualizados (através do botão Novo Campo). Após a escolha da entidade e dos campos, existe a possibilidade da criação de regras que permitem que condições de filtro sejam aplicadas nas atualizações.
Image Added
Figura 5.3.3 - Adicionando o campo que será atualizado e a regra
Image Added
Figura 5.3.4 - Atualizando o campo name pelo ID do usuário
Informações | ||
---|---|---|
| ||
As regras definidas com valor dinâmico geram um parâmetro de entrada na função. No exemplo da figura 5.3.4, gerou o parâmetro id. |
Bloco Remover
O bloco remover também apresenta dois tipos: objeto (Figura 5.4.1) e campos (Figura 5.4.2). Para a remoção do tipo objeto ocorrer, é necessário indicar qual é o emento que será removido, seja ele pelo ID ou outro campo.
Image Added
Figura 5.4.1 - Adicionando uma entidade como objeto
Image Added
Figura 5.4.2 - Passando objeto que será removido através do ID
No caso da remoção pelos campos, será apresentado o campo para definir a regra que fará a exclusão do elemento da entidade, podendo ser o ID ou qualquer outro campo.
Image Added
Figura 5.4.3 - Adicionando regra que fará um usuário ser removido
Image Added
Figura 5.4.4 - Remoção de um usuário através do ID
Bloco Criar Entidade
Ele cria um objeto de uma entidade, permitindo selecionar os campos que serão alimentados via bloco. Após selecionada a entidade e seus campos (Figura 5.5.1), eles passam a ser parâmetros do bloco (Figura 5.5.2).
Image Added
Figura 5.5.1 - Adicionar entidade e seus campos
Image Added
Figura 5.5.2 - Campos viram parâmetros do bloco
Nessa página
Índice