- Created by Igor Andrade, last modified on 08/01/2021
O Cronapp utiliza um assistente de consulta visual que facilita a criação de consultas ao banco de dados.
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.
- Estrutura da consulta: possui as opções para a criação da consulta, como selecionar as entidades, campos, criar regras e outros.
- Modo de consulta: ao testar a consulta, altera a exibição dos dados em modo tabela ou objeto.
- Aplicar dados da requisição: aplica as requisições (paginação, ordenação e outros) diretamente na consulta.
- Habilitar paginação: realiza a paginação dos dados em uma página de forma automática.
- 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.
- 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.
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.
- Clique no botão "…" e selecione a entidade app.entity.user (User).
- Clique no botão lateral + Adicionar.
- Clique em + Novo Campo,
- Deixe selecionado opção padrão Obter e selecione a opção u.id no campo seguinte.
- Clique em + Nova Regra para definirmos o filtro.
- 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:
select u.id from User u where u.normalizedUserName = :normalizedUserName
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.
Nessa página
Páginas desse tutorial
Importe o projeto completo
- No labels