Repository层
public interface UserRepository extends JpaSpecificationExecutor,JpaRepository<User,Long>{
}
Util包
public class UserUtil {
/**
* 判断字符串是否为空
* @param str
* @return true-不为空 false-为空
*/
public static boolean isNotBlank(String str){
if(str == null || str.length()<=0){
return false;
}else{
return true;
}
}
}
Impl包
@Component
public class UserSpecification {
public Specification<User> where(final String address) {
return new Specification<User>() {
@Override
public Predicate toPredicate(Root<User> root, CriteriaQuery<?> criteriaQuery, CriteriaBuilder criteriaBuilder) {
List<Predicate> predicates = new ArrayList<>();
//用户地址模糊查询
if (UserUtil.isNotBlank(address)) {
predicates.add(criteriaBuilder.like(root.get("address"), "%" + address + "%"));
}
return criteriaQuery.where(predicates.toArray(new Predicate[predicates.size()])).getRestriction();
}
};
}
}
Service层
public Page addressList(String address,Integer page,Integer size){
PageRequest pageRequest = PageRequest.of(page,size,new Sort(Sort.Direction.DESC,“age”));
Specification userQuery = userSpecification.where(address);
System.out.println(address);
return userRepository.findAll(userQuery,pageRequest);
}
Controller
public Page list2(@ApiParam(value=“用户地址”,name=“address”,required = true)@RequestParam String address,
@ApiParam(value=“起始行”,name=“page”,required = true)@RequestParam Integer page,
@ApiParam(value=“每页行数”,name=“size”,required = true)@RequestParam Integer size){
System.out.println(address);
System.out.println(page);
System.out.println(size);
return userService.addressList(address,page,size);
}