Consulta difusa
O uso do Spring Data JPA pode reduzir a redação dos desenvolvedores de instruções SQL e até não precisa escrever instruções SQL. No entanto, durante o processo de desenvolvimento, sempre haverá vários cenários e armadilhas complexos de todos os tamanhos.
Um módulo funcional no projeto hoje requer consulta difusa. A palavra -chave de consulta difusa 'como' no SQL nativo e a interface do repositório da Spring Data JPA também gostam de correspondência aos campos de entidade. Mas se você o usar diretamente, parabéns, teve a sorte de ter uma armadilha.
Dados da primavera JPA Fuzzy Query Uso correto
Primeiro, criamos uma entidade para armazenar nossos dados
/** * entidade * * @author chentai * @date 18/04/22 */ @data @entity @EqualSandHashCode (Callsuper = true) Public Class Exemplotity {@id @generatedValue (generator = "uuid") @genericGenerator (name = "uuid", estratégia = " Nome de usuário privado de string; nomes privados de string de string;}Em seguida, crie a interface do repositório correspondente à nossa entidade
/** * @author chentai * @date 18/04/22 */ @RepositoryPublic Interface ExamplerePository estende Crudrepository <Exemplo de EXEMPLEIRA, String> {/** * Uso correto de consulta fuzzy * onde o nome do usuário não suporta Fuzzy, queda, devicenames de queda de injeção * nome de usuário nome de usuário nome de usuário * @return {@link list <samlessEntity>} */ list <samlessEntity> findAllByDevicenamesContainAndUserName (string deviceNames, string userName); / *** Uso do erro da consulta difusa* Onde o nome de usuário não suporta consulta difusa, os nomes de deviceNes suportam consulta difusa** @param deviceNames Fuzzy Query deviceNames* @param userSername userName username* @return { @link <ExpletEnTity>}*/ list <Expletentity> nome de usuário); } Finalmente, testamos dois métodos em ExampleReRepository na classe de teste (os resultados do teste não são exibidos por enquanto) e descobrimos que o FindAllByDevicenameslikiKeandName Method não consultou corretamente o resultado que desejamos, e o resultado obtido é o resultado da consulta exata. E FindAllByDevicenamesContaining e o nome do resultado obtém o resultado da consulta difusa que queremos.
Resumir
Se você deseja usar consultas difusas sem escrever declarações nativas do SQL em seu projeto, use a palavra -chave contendo em vez de considerá -la certa de que as palavras -chave são usadas nativamente. Como as palavras -chave também são usadas no JPA.
O exposto acima é todo o conteúdo deste artigo. Espero que seja útil para o aprendizado de todos e espero que todos apoiem mais o wulin.com.