Requête floue
L'utilisation des données de printemps JPA peut réduire la rédaction des instructions des développeurs SQL et n'a même pas besoin d'écrire des instructions SQL. Cependant, pendant le processus de développement, il y aura toujours différents scénarios complexes et pièges de toutes tailles.
Un module fonctionnel dans le projet aujourd'hui nécessite une requête floue. Le mot-clé Fuzzy Query «Like» dans Native SQL, et l'interface de référentiel de Spring Data JPA a également comme correspondant aux champs d'entités. Mais si vous l'utilisez directement, alors félicitations, vous avez eu la chance d'avoir un piège.
Données de printemps JPA Fuzzy Query Utilisation correcte
Tout d'abord, nous créons une entité pour stocker nos données
/ ** * entité * * @Author Chentai * @Date 18/04/22 * / @ data @ entity @ equalsandhashcode (appeloper = true) public class exampleentity {@id @generatedvalue (generator = "uUid") @genericGenerator (name = "uuid", "uUid") private String id; Nom d'utilisateur de chaîne privée; DeviceNames de chaîne privée;}Ensuite, créez l'interface du référentiel correspondant à notre entité
/ ** * @Author Chentai * @Date 18/04/22 * / @ Interface RepositoryPublic ExampleRepository étend CruDrepository <ExempleEntity, String> {/ ** * Utilisation correcte de Fuzzy Query * où Username ne prend pas en charge Fuzzy Query, DeviceNames supporte Fuzzy Query * * nom d'utilisateur username nom d'utilisateur * @return {@Link list <Exampleentity>} * / list <nampleEntity> findallByDeviceNamesContainingAndUserName (String DeviceNames, String username); / ** * Utilisation d'erreur de la requête floue * où le nom d'utilisateur ne prend pas en charge la requête floue, DeviceNames prend en charge la requête Fuzzy * * @param deviceNames Fuzzy Query DeviceNames * @param username username username * @return {@link list <nEXEentity>} * / List <ExempleDames> FindallDeviceNamesLikeLikeDus nom d'utilisateur); } Enfin, nous avons testé deux méthodes dans ExampleRepository dans la classe de test (les résultats des tests ne sont pas affichés pour le moment) et avons constaté que la méthode FindallDeviceNamesLikEnSusername n'a pas correctement interrogé le résultat que nous voulions, et le résultat obtenu est le résultat de la requête exacte. Et FindallByDeviceNamesContainingandUsername obtient le résultat de la requête floue que nous voulons.
Résumer
Si vous souhaitez utiliser des requêtes floues sans écrire des instructions natives SQL dans votre projet, veuillez utiliser le mot-clé contenant au lieu de prendre pour acquis que les mots clés comme les mots clés sont utilisés nativement. Comme les mots clés sont également utilisés dans JPA.
Ce qui précède est tout le contenu de cet article. J'espère que cela sera utile à l'apprentissage de tous et j'espère que tout le monde soutiendra davantage Wulin.com.