Jpa 使用Example模糊查询,多字段模糊查询
发布时间:
2024-03-13
预览次数:
在JPA中,可以使用Example对象进行模糊查询,Example对象是Spring Data JPA提供的一种查询条件的封装方式。在进行多字段模糊查询时,可以通过设置ExampleMatcher对象的matching()方法来指定多字段的匹配方式。
下面是一个示例代码,演示如何使用Example对象进行多字段模糊查询:
import org.springframework.data.domain.Example; import org.springframework.data.domain.ExampleMatcher; import org.springframework.data.domain.ExampleMatcher.GenericPropertyMatcher; // 创建一个实体类,例如 UserUser user = new User(); user.setSex(1);//这个属性不参与模糊查询,直接查属性值 user.setName("张三"); user.setAge(25);// 创建ExampleMatcher对象,指定多字段模糊查询条件 ExampleMatcher matcher = ExampleMatcher.matching() .withMatcher("name", GenericPropertyMatcher.of(ExampleMatcher.StringMatcher.CONTAINING)) .withMatcher("age", GenericPropertyMatcher.of(ExampleMatcher.GenericPropertyMatchers.exact())); // 创建Example对象,指定查询条件和匹配方式 Example<User> example = Example.of(user, matcher); // 调用JpaRepository的findAll方法进行查询 List<User> users = userRepository.findAll(example);
在上面的示例中,首先创建一个User对象,并设置需要模糊查询的字段。然后创建ExampleMatcher对象,通过withMatcher()方法指定字段的匹配方式,这里name字段使用CONTAINING方式进行模糊查询,age字段使用exact()方式进行精确匹配。最后创建Example对象,将User对象和ExampleMatcher对象传入Example.of()方法,然后调用JpaRepository的findAll方法进行查询。
在上面的示例中,与之前的示例相比,只需将ExampleMatcher对象的matching()方法改为matchingAny()即可将多个条件设置为"或"关系。这样就可以实现多字段模糊查询和"或"关系查询的功能。
通过以上示例,可以实现多字段模糊查询的功能。需要注意的是,Example对象只支持对实体类中的字段进行查询,不支持关联查询。如果需要进行关联查询,可以使用Specification或QueryDSL等方式来实现。