以下是一个xxxServiceImp的代码实例
@Override
public PagedList<Device> getAllByModel(String queryStr, int model, int page, int pageSize) {
Pageable pageable = PageRequest.of(page-1, pageSize);
Page<DeviceDetailEntity> deviceEntities = deviceRepository.findByModelIdAndKeyword(model, queryStr, pageable);
List<Device> devices = deviceEntities.stream().map(p ->
{
Device device = new Device(p.getId(), p.getModelId(), p.getName(), p.getDescription(), p.getPositionId(),p.getAddUser());
device.setError(p.isError());
device.setOnline(p.isOnline());
device.setPoint(new GeoPoint(p.getLng(), p.getLat()));
return device;
}).collect(Collectors.toList());
PagedList<Device> devicePage = new PagedList<>(deviceEntities.getTotalElements(), page, pageSize);
devicePage.setItems(devices);
return devicePage;
}
findByModelIdAndKeyword(model, queryStr, pageable)这个方法是在Jpa中自定义的,所以返回结果是一个Page。所以,要直接在xxxServiceImp接口中返回PagedList<>()对象,需要在JPA自定义一个方法,返回Page对象,用Page对象的getTotalElements()方法来获取totla参数值,有参构造PagedList<>().
或者直接用Jpa的方法返回List<>()对象,用它的size()方法获取total参数。