Page tree
Skip to end of metadata
Go to start of metadata

O Cronapp utiliza um assistente de consulta visual que facilita a criação de consultas ao banco de dados.

Essa página é parte de um tutorial, veja mais detalhes sobre o conteúdo abordado aqui em Assistente de consulta JPQL.

Visão Geral

As consultas não são em SQL puro, mas em JPQL (Java Persistence Query Language) que é uma linguagem de consulta ORM que opera sobre classes e objetos, diferente do SQL que opera sobre tabelas. Ela é também uma especificação da JPA e apesar de trabalhar com entidade (classes), é uma linguagem bem semelhante a SQL. Uma das vantagens da JPQL é que a mesma consulta pode ser executada em todos os bancos de dados.

O Assistente de consulta além de gerar uma consulta JPQL, possui outras funcionalidade, como vista na Figura abaixo:


Figura 1.1 - Assistente de consulta visual.


  1. Estrutura da consulta: possui as opções para a criação da consulta, como selecionar as entidades, campos, criar regras e outros.
  2. Modo de consulta: ao testar a consulta, altera a exibição dos dados em modo tabela ou objeto.
  3. Aplicar dados da requisição: aplica as requisições (paginação, ordenação e outros) diretamente na consulta.
  4. Habilitar paginação: realiza a paginação dos dados em uma página de forma automática.
  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.
  6. 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.
  7. Visualizar como texto: exibe a consulta feita no formato visual em forma de texto.
  8. OK e Cancelar: salva ou cancela a consulta.


Curiosidade

Você pode querer usar algum recurso ou funções próprias do seu banco de dados (MySQL, PostgreSQL, SQLSERVER e outros) e o JPQL permite isso. Basta utilizar a função SQL(' ') na consulta JPQL ao editar como texto.

Por exemplo, a consulta abaixo retorna o horário atual do banco de dados.

select SQL('NOW()') from User u



Passos

De volta ao nosso exemplo, na função IdDoUsuarioLogado, que criamos no passo anterior, clique no ícone de configurações do bloco Abrir consulta para abrir a janela de assistente de consulta.


Figura 2.1 - Consulta para obter o Id do usuário através do seu login.


Siga os passos abaixo para obter a consulta da Figura 2.1.

  1. Clique no botão "…" e selecione a entidade app.entity.user (User).
  2. Clique no botão lateral + Adicionar.
  3. Clique em + Novo Campo,
  4. Deixe selecionado opção padrão Obter e selecione a opção u.id no campo seguinte.
  5. Clique em + Nova Regra para definirmos o filtro.
  6. Selecione no primeiro campo a opção u.normalizedUserName.

Após isso, clique no botão "Visualizar como texto" e será apresentado uma consulta como a informado abaixo: 

Consulta em modo texto
select u.id from User u where u.userName = :userName

Ou seja, a consulta irá retornar o ID do usuário que possui o UserName normalizado que iremos passar. Clique em Voltar, para retorna a janela do assistente visual e depois em OK (7) para salvar.

Normalizar nome do usuário

A classe User possui dois atributos para o nome do Usuário, o normalizedUserName e o UserName. Dessa forma, as aplicações criadas no Cronapp permitem que o usuário possa criar seu nome de usuário com caracteres especiais, por exemplo "João", que será salvo no campo UserName. Porém, para garantir a segurança, esse nome será automaticamente normalizado, retirando os caracteres especiais e salvando no campo normalizedUserName como "joao".

Quando o usuário for se autenticar na aplicação, tanto faz ele informar "João" ou "joao" no campo Usuário, o sistema irá normalizar o usuário informado e converter para "joao", só depois irá comparar com campo normalizedUserName e sua senha, permitindo ou não seu acesso.

Acoplando os blocos

De volta ao bloco de programação que não finalizamos na etapa passada.

Após a configuração da consulta visual, o bloco Abrir consulta vai exibir como parâmetro uma abertura lateral normalizedUserName, então acople o bloco Normalizar junto com a chamada da função que criamos inicialmente LoginDoUsuario, como na Figura 2.2.



Figura 2.2 - Finalizando o bloco IdDoUsuarioLogado


Finalizada a configuração das funções do sistema, vamos trabalhar com as páginas web e mobile nas próximas etapas.


  • No labels