Spring JPA多字段模糊查询或多条件查询

1.方法一

  使用@Query(),使用hibernate的Hql既可以分页又可以自主拼接


//这是dao层

 @Query(value = "SELECT u FROM UserInfo u WHERE u.penName LIKE :name OR u.address LIKE :name AND last_post_time > :MaxTime AND last_post_time < :MinTime") List searchByMsg(@Param("MaxTime") Date MaxTime,@Param("MinTime") Date MinTime,@Param("name")String name, Pageable pageable);


server层模糊的地方要'%'+参数+'%'


Pageable pageable = PageRequest.of(userInfoDto.getPageNum()-1, userInfoDto.getPageSize(), Sort.by(Sort.Direction.DESC, "lastReceiveTime"));
logs = userInfoRepository.searchByMsg(this.getDate(userInfoDto.getMaxTime()),this.getDate(userInfoDto.getMintime()),'%'+userInfoDto.getPanName()+'%',pageable);

2.方法二

   使用JPA自定的命名规则边联想边写很好用


//这样也可以实现分页一个或多个参数都可使用Containing

List findAllByPenNameContainingOrAddressContaining(String PenName,Address,Pageable pageable)

//service中

logs = userInfoRepository.findAllByPenNameContainingOrAddressContaining(userInfoDto.getPanName(),userInfoDto.getPanName(),pageable);  


 

另外可以参考这个表

Spring JPA多字段模糊查询或多条件查询_第1张图片

你可能感兴趣的:(Java基础)