Consulta borrosa
El uso de datos de primavera JPA puede reducir la escritura de los desarrolladores sobre las declaraciones SQL, e incluso no es necesario escribir declaraciones SQL en absoluto. Sin embargo, durante el proceso de desarrollo, siempre habrá varios escenarios y dificultades complejos de todos los tamaños.
Un módulo funcional en el proyecto hoy requiere una consulta difusa. La palabra clave de consulta difusa 'como' en SQL nativa, y la interfaz de repositorio de Spring Data JPA también tiene como correspondencia a los campos de entidad. Pero si lo usa directamente, felicitaciones, tuvo la suerte de tener una trampa.
Datos de primavera JPA Fuzzy Consulta Correcto Uso
Primero, creamos una entidad para almacenar nuestros datos
/** * entidad * * @author chentai * @date 18/04/22 */ @data @entity @EqualsAndHashCode (Llamsuuper = true) public class EjemploEntity {@id @GeneratedValue (generador = "uuid") @Generator (name = "uuid", estrategia = "uuid") privado string id; nombre de usuario de cadena privada; cadena privada DeviceNames;}A continuación, cree la interfaz del repositorio correspondiente a nuestra entidad
/** * @author chentai * @date 18/04/22 */ @RepositoryPublic Interface EjemploPository extiende CrudrePository <Ejemplo, string> {/** * Uso correcto de la consulta Fuzzy * donde UserName no es compatible Nombre de usuario Nombre de usuario * @return {@link list <sampleEntity>} */ list <sampleEntity> findallByDeviceNamesContainingAndUsername (String DeviceNames, String UserName); / *** Uso de error de la consulta difusa* donde el nombre de usuario no admite la consulta difusa, DeviceNames admite la consulta difusa** @param DeviceNames Fuzzy consulta DeviceNames* @param username username username* @return {@link list <signEntity>}*/ list <Insperentity> findallByDeviCeNamesLameMeDusDusDUSEnameMeNAM nombre de usuario); } Finalmente, probamos dos métodos en exámbrica en la clase de prueba (los resultados de la prueba no se muestran por el momento) y descubrimos que el método FindallByDeviceNamesLikeAndusername no consultó correctamente el resultado que queríamos, y el resultado obtenido es el resultado de la consulta exacta. Y FindAllByDeviceNamescontrininging y UserName obtiene el resultado de la consulta difusa que queremos.
Resumir
Si desea utilizar consultas difusas sin escribir declaraciones nativas de SQL en su proyecto, utilice la palabra clave que contiene en lugar de darla por sentado que, al igual que las palabras clave, se usan de forma nativa. Al igual que las palabras clave también se usan en JPA.
Lo anterior es todo el contenido de este artículo. Espero que sea útil para el aprendizaje de todos y espero que todos apoyen más a Wulin.com.