Você está vendo a versão antiga da página. Ver a versão atual.

Comparar com o atual Ver Histórico da Página

« Anterior Versão 65 Próxima »

Para criar as consultas ao banco de dados, o Cronapp utiliza o assistente de consulta visual, simplificando esse processo.

Visão Geral 

O Assistente de Consulta visual gera consultas em JPQL (Jakarta Persistence Query Language, conhecido antigamente como Java Persistence Query Language), uma linguagem de consulta ORM que atua sobre classes e objetos, diferentemente do SQL que realiza as consultas sobre tabelas. O Assistente é 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), usando JPQL.

 

Figura 1.1 - Assistente de consulta visual (Bloco de programação)


  1. Estrutura de Consulta: Possui as opções para a criação da consulta, como seleção das entidades, campos de retorno, regras e outros.
  2. 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). 
  3. Aplicar dados da requisição: Aplica as requisições (paginação, ordenação e outros) diretamente na consulta (ver mais detalhes em aqui).
  4. Habilitar Paginação: Realiza a paginação dos dados em telas de forma automática (ver mais detalhes em aqui).
  5. 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).
  6. Editar como Texto: Muda a janela para editar a consulta manualmente em JPQL (high-code). Após alterar uma consulta manualmente, não será possível editar novamente em modo visual.
  7. Visualizar como Texto: Exibe a consulta JPQL gerada através da configuração visual.
  8. 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


  1. Entidade: adiciona as entidades que farão parte da consulta.
  2. Campos: define quais campos serão buscados na consulta.
  3. Regras: regra que será considerada ao buscar os dados no banco.
  4. Agrupar: agrupa linhas que possuem valores iguais nos mesmos campos.
  5. Having: cria regras para serem usadas juntos com os campos agrupados.
  6. Ordenar: define a ordem em que os dados serão retornados.

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 a área de seleção dos campos já mapeia todos os campos das entidades relacionadas. Por exemplo, imagine que uma 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 (tópico abaixo) selecionar a opção "A.B.C.nome", criando um JOIN automaticamente. 


Figura 2.2 - Área de seleção das entidades

Botões:

  • 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.

Destaques da figura 2.2:

  1. Exibe a entidade selecionada.
  2. Exibe o alias configurado para a entidade selecionada,


Para adicionar as entidades que farão parte da consulta, clique no botão "..." do campo Entidade, selecione a classe desejada e finalize clicando em "+ Adicionar".

Campos

Define quais campos serão buscados na consulta. Equivale a seleção dos campos das tabelas após a 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". 

Botões:

  • + Novo Campo: adiciona um campo das entidades selecionadas ou de entidades relacionadas.
  • + Adicionar Todos: insere todos os campos das entidades selecionadas.
  • Excluir: exclui o campo.

Destaques da figura 2.3:

  1. 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 do campo selecionado;
    • MAX: retorna o maior valor do campo selecionado;
    • AVG: retorna a média aritmética dos valores do campo selecionado;
    • SUM: retorna a soma dos valores do campo selecionado;
    • COUNT: retorna a quantidade de registros do campo selecionado.
  2. Campo selecionado: Seleciona qual o campo será consultado. 


Para retornar todos os campos de uma entidade, basta selecionar o alias da entidade desejada. Primeiro exemplo da figura 2.3: obter | lg.

Para retornar um campo específico, é necessário selecionar o alias da entidade com o campo desejado. Segundo exemplo da figura 2.3:  obter | lg.providerDisplayName.

Caso queira obter um campo de uma entidade relacionada (JOIN), selecione o alias da entidade, junto com o nome da entidade relacionada e o nome do campo. Terceiro exemplo da figura 2.3: obter | lg.user.name

Por padrão, a caixa de seleção dos campos só exibe relacionamentos até o terceiro nível. para relacionamentos maiores, informe manualmente. Exemplo: EntidadeA.EntidadeB.EntidadeC.EntidadeD.atributo.

Regras

Nessa propriedade é definida as regras que serão consideradas 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". As regras equivalem ao filtro após sentença "WHERE" em uma consulta SQL.


Figura 2.4 - Área de seleção das regras da consulta


Botões:

  • + Nova Regra: adiciona uma regra vinculada ao campo selecionado.
  • + Novo Grupo: insere um grupo com uma ou mais regras.
  • Excluir: exclui a regra ou grupo selecionado.

Destaques da figura 2.4:

  1. Negação: nega a sentença vinculada, adicionando um "not" antes.
  2. Operador lógico: define se o operador lógico entre as sentenças será "e" ou "ou".
  3. 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".
  4. Campo da entidade: campo da entidade que será utilizado na criação da regra.
  5. 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.
  6. 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.
  7. ↑ ↓ : clique e arraste o ícone ↑ ↓ para modificar a posição de uma regra ou grupo. 


A regra (where) definido na figura 2.4 ficará da seguinte forma:

WHERE
usr.name = :name AND (NOT (lg.user.phoneNumber LIKE (CONCAT('%', '(71)', '%')) ))

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


Destaques da figura 2.5:

  1. Campo a ser agrupado: seleciona qual o campo será agrupado.

Botões:

  • + Novo Campo: adiciona outro campo para agrupar.
  • Excluir: exclui o campo selecionado.

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. Possui a mesma função do Having em consultas SQL.


Figura 2.6 - Área de seleção das regras do Having

Botões:

  • + Novo Campo: adiciona outro campo para agrupar.
  • Excluir: exclui o campo selecionado.

Destaques da figura 2.6:

  1. 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 do campo selecionado;
    • MAX: retorna o maior valor do campo selecionado;
    • AVG: retorna a média aritmética dos valores do campo selecionado;
    • SUM: retorna a soma dos valores do campo selecionado;
    • COUNT: retorna a quantidade de registros do campo selecionado.
  2. Campo: campo usado para a comparação com o parâmetro.
  3. 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.
  4. Parâmetro: valor que será comparado com o tipo de dado retornado.

Ordenar

Nessa opção define a ordem de retorno dos itens. Por exemplo, é possível trazer a lista de funcionários ordenada pelos maiores salários. Possui a mesma função do Order by em consultas SQL.


Figura 2.7 - Área de ordenação da consulta


Botões:

  • + Novo Campo: adiciona outro campo para agrupar.
  • Excluir: exclui o campo selecionado.

Destaques da figura 2.7:

  1. 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 do campo selecionado;
    • MAX: retorna o maior valor do campo selecionado;
    • AVG: retorna a média aritmética dos valores do campo selecionado;
    • SUM: retorna a soma dos valores do campo selecionado;
    • COUNT: retorna a quantidade de registros do campo selecionado.
  2. Campo: campo que será utilizado para a ordenação.
  3. 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, para consultas mais complexas que necessitam dessas funcionalidades, use o modo high code (SQL puro).


Figura 3.1 - Exemplo de consulta visual 


A consulta gerada pela configuração do assistente visual da Figura 3.1:

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:

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

Fonte de dados e Bloco de programação 

O Assistente de consulta JPQL pode ser usado em Fonte de dados do tipo Entidade (destaque 1 da figura 4.1) e em alguns blocos de programação de acesso ao banco de dados (destaque 3 da figura 4.2):

  • Fonte de dados do tipo Entidade (Figura 4.1):
    1. Selecione a opção Entidade;
    2. Selecione a entidade principal no botão "...";
    3. Abra o Assistente de consulta para personalizar através do botão Editar da aba Filtro.


Figura 4.1 - Fonte de dados vinculada a uma entidade e sua consulta


  • Bloco de Programação (Figura 4.2):
    1. Selecione a opção Bloco de Programação;
    2. Selecione uma função já criada através do botão "....";
    3. Na função, utilize o ícone engrenagem do bloco Abrir consulta para abrir o Assistente de consulta visual do bloco.


Figura 4.2 - Fonte de dados alimentada por bloco de programação com a opção Habilitar paginação ativa


Alimentar uma fonte de dados por bloco de programação permite que seja feito algum tratamento no conteúdo obtido antes de alimentar a fonte de dados. O Assistente de consulta visual do Bloco de programação possui duas funcionalidades a mais:  Aplicar Dados da Requisição e Habilitar Paginação. (Figuras 4.3 e 4.4).


Figura 4.3 - Assistente de Consulta Visual aberto via Bloco de programação


Figura 4.4 - Assistente de Consulta Visual aberto via Fonte de dados

Aplicar dados da requisição

Nas versões anteriores do Cronapp 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 (Figura 4.3). Essa nova opção 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.2).

  • 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 definir 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

O bloco de banco de dados Abrir consulta exibe a mesma estrutura do Assistente visual como vimos acima. Já os blocos de manipulação de dados (DML - Data Manipulation Language) possuem algumas diferenças.


Figura 5.1 - Blocos que utilizam o Assistente de consulta visual


Blocos do tipo servidor de acesso ao banco de dados:

  1. Criar nova Entidadecria um objeto para usar junto a um dos blocos abaixo.
  2. Inseriradiciona novo registro ao banco de dados por meio do assistente visual do JPQL.
  3. Abrir consultacria uma consulta no banco de dados por meio do assistente visual do JPQL.
  4. Atualizar: atualiza registros no banco de dados por meio do assistente visual JPQL.
  5. Remover: remove registros do banco de dados por meio do assistente visual JPQL.

Bloco Criar nova Entidade

Utilize esse bloco para criar objetos de uma entidade e facilitar a manipulação de dados junto aos outros blocos de banco de dados. Selecione o ícone engrenagem para abrir a janela de configuração, escolha a entidade desejada no botão "..." (campo Entidade) e, por fim, marque os atributos (área Campos) que serão alimentados.

Acesse a documentação do bloco Criar entidade para mais detalhes.


Figura 5.2 - Criando um objeto a partir do bloco Criar nova Entidade


Todos os demais blocos apresentados aqui podem ser alimentados a partir do objeto gerado pelo bloco Criar nova Entidade (Figura 5.2) ou diretamente pela seleção de campos (Figura 5.3).

Bloco Inserir

Utilize o bloco Inserir para adicionar registros a partir de um objeto ou seus campos.

Acesse a documentação do bloco Inserir para mais detalhes.


Figura 5.3 - Configuração do bloco Inserir


  1. Entidade: abre a janela de seleção de entidades.
  2. Tipo: informa se o bloco será alimentado a partir dos atributos "Campos" da entidade ou a partir do "Objeto", por exemplo, utilizando em conjunto com o bloco Criar Nova Entidade (Figura 5.2).
  3. + Novo Campo: clique para adicionar os campos da entidade.
  4. Campos: lista de campos adicionados.
  • Botão Excluir: apaga os campos inseridos. Exclua todos os campos para retornar ao tipo "Objeto".

Bloco Atualizar

Utilize o bloco Atualizar para modificar registros em uma tabela a partir de um objeto ou seus campos.

Acesse a documentação do bloco Atualizar para mais detalhes.


Figura 5.4 - Configuração do bloco Atualizar


  1. Entidade: abre a janela de seleção de entidades.
  2. Tipos: define como será atualizado o registro:
    • Campos: permite selecionar os campos que serão atualizados e criar regras para atualizar um ou vários registros ao mesmo tempo;
    • Objeto: esta opção não permite definir campos e regras, o bloco Atualizar modifica o registro com base no objeto informado.
  3. Área campos: seleciona os campos que serão alterados. Possui a mesma estrutura vista em Campos.
  4. Área regras: define o filtro dos registros que serão atualizados. Possui a mesma estrutura vista em Regras.
  • Botão Excluir: apaga os campos e regras inseridos. 

Acesse a figura 1.1 para obter informações sobre o campo Modo de consulta e os botões Testar Consulta, Editar Texto e Visualizar como Texto.

Bloco Remover

O bloco Remover exclui um ou mais registros com base em filtros ou objeto.

Acesse a documentação do bloco Remover para mais detalhes.


Figura 5.5 - Configuração do bloco Remover


  1. Entidade: abre a janela de seleção de entidades.
  2. Tipos: define como será configurado a seleção de registros:
    • Campos: permite criar regras para remover um ou vários registros ao mesmo tempo;
    • Objeto: esta opção não permite definir regras, o bloco Remover exclui o registro com base no objeto informado.
  3. Área regras: define o filtro dos registros que serão excluídos. Possui a mesma estrutura vista em Regras.
  • Botão Excluir: apaga as regras inseridas. 

Acesse a figura 1.1 para obter informações sobre o campo Modo de consulta e os botões Testar Consulta, Editar Texto e Visualizar como Texto.

Nesta página



  • Sem rótulos