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

Ao utilizarmos o Assistente de Consulta Visual, geramos consultas em JPQL (Java Persistence Query Language). Diferente do SQL que opera sobre tabelas, as consultas em JPQL operam sobre classes e objetos. Além de possui sintaxe bem semelhante ao SQL, consultas em JPQL podem ser executadas em praticamente todos os bancos de dados, sem a necessidade de adaptação.

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 o código gerado pela consulta visual.
  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 em um banco MySQL.

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



Passos

De volta a 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).


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 "…" do campo Entidade 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 para ver uma consulta igual a informada abaixo: 

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

Ou seja, a consulta irá retornar o ID do usuário que possui o mesmo nome de usuário normalizado que iremos passar. Clique em Voltar, para sair do modo de visualizar como texto e retornar para a janela de edição visual, finalize clicando 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 o seu acesso se os dois campos estiverem corretos.

Acoplando os blocos

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



Figura 2.2 - Finalizando a função de 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