Estou com dificuldade para criar um contador de registros duplicados no banco mysql. Preciso da informação qual a frequência que o nome aparece na lista, mas ele não mostra o resumo.
Você vai fazer um consulta por vez? Digo, cada consulta vai ter apenas um nome como parâmetro?
T
ThiagoNapoleao
isso, vou pegar um codigo inserido no campoTxt.getText() e preciso saber quantas vezes ele aparece repedito no banco mysql
T
ThiagoNapoleao
ele esta retornando assim…
{RODRIGOAUGUSTOALVES=1}
no total são 460.
segue o codigo:
publicvoidContador(){List<Pln0048r>confT=Pln0048rJpaDAO.getInstance().findByCodigo(codigoTxt.getText());Stringnome="";for(intt=0;t<confT.size();t++){// efetua a soma de totalnome=confT.get(t).getNome();}List<String>nomes=newArrayList<>();nomes.add(nome);Map<String,Long>collect=nomes.stream().collect(Collectors.groupingBy(nomec->nomec,Collectors.counting()));System.out.println(collect);}
funcionou, esta aparecendo o resumo…
mas como faça para aparecer apenas a quantidade…
ele retorna a informação assim…
{RODRIGO AUGUSTO ALVES =216}
preciso que apareça apenas o valor “216” para eu incluir no textbox
obrigado
Lucas_Camara
O código retorna um Map, com isso, você consegue obter os valores fazendo uma iteração ou obtendo os valores como uma lista, assim:
legal. isso mesmo, mas ainda não consigo inserir no textbox ele aparece o erro.
“incompatible types: List cannot be converted to String”
deve ser pq o valor que esta retornando esta entre colchetes, ele aparece assim [216].
não consigo converter ele para o txtbox.
Lucas_Camara
Não vai pq vc não vai conseguir colocar uma lista num textbox. O que exatamente esse textbox tem que apresentar? todos os valores contados separados por vírgula? Tem que mostrar a soma total? Pq, pelo que entendi, poderá ter mais de um valor para cada nome repetido.
T
ThiagoNapoleao
tem que mostrar a soma total…
exemplo.
o projeto é a tela de monitoramento para ver quanto um funcionário conferiu, cada linha desse arquivo é uma pedido conferido.
preciso saber quantas vezes o funcionário conferiu.
na lista ele esta mostrando que o funcionário conferiu 216 vezes…
Lucas_Camara
E esse valor (216) está correto?
T
ThiagoNapoleao
sim
Lucas_Camara
E se for mais de um funcionário, vc vai mostrar a soma de cada em apenas um textbox?
T
ThiagoNapoleao
isso. a busca que ele faz é individual.
ele faz pelo codigo que é digitado no "codigoTxt.getText()"
List cont = Pln0048rJpaDAO.getInstance().findByCodigo(codigoTxt.getText());
javaflex
Não precisa dessa gambiarra, como está usando mysql faz uma query com sum/group by.
T
ThiagoNapoleao
tem algum exemplo. sou iniciante…
javaflex
T
ThiagoNapoleao
não consegui aplicar no meu projeto…
javaflex
O que tentou? Nunca fez uma query no banco com Java?
T
ThiagoNapoleao
nunca fiz… estou tentando aplicar que nem o modelo
select s.name, max(s.description) from Searchresult s group by s.name
Tem o exemplo acima. Não pule etapas, estude sobre essa parte antes. Estude sobre SQL e Hql/Jpql (por voce estar usando JPA, senao seria mais prático usar SQL diretamente).
T
ThiagoNapoleao
vou estudar o post… mas pelo que estava lendo ele vai fazer a soma e não contar quantas vezes ele aparace no banco…
javaflex
É só a funcao usar count. Quando estudar verá todas as funcoes de agregacao.