分页的工具类
package com.pig.pigBase.tools;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
/**
* 封装分页和排序
*/
public class PageableTools {
/**
* 获取基础分页对象
* @param page 获取第几页
* @param size 每页条数
* @param dtos 排序对象数组
* @return
*/
public static Pageable basicPage(Integer page, Integer size, SortDto... dtos) {
Sort sort = SortTools.basicSort(dtos);
page = (page==null || page<0)?0:page;
size = (size==null || size<=0)?15:size;
Pageable pageable =PageRequest.of(page, size, sort);
return pageable;
}
/**
* 获取基础分页对象,每页条数默认15条
* - 默认以id降序排序
* @param page 获取第几页
* @return
*/
public static Pageable basicPage(Integer page) {
return basicPage(page, 0, new SortDto("desc", "id"));
}
/**
* 获取基础分页对象,每页条数默认15条
* @param page 获取第几页
* @param dtos 排序对象数组
* @return
*/
public static Pageable basicPage(Integer page, SortDto... dtos) {
return basicPage(page, 0, dtos);
}
/**
* 获取基础分页对象,排序方式默认降序
* @param page 获取第几页
* @param size 每页条数
* @param orderField 排序字段
* @return
*/
public static Pageable basicPage(Integer page, Integer size, String orderField) {
return basicPage(page, size, new SortDto("desc", orderField));
}
/**
* 获取基础分页对象
* - 每页条数默认15条
* - 排序方式默认降序
* @param page 获取第几页
* @param orderField 排序字段
* @return
*/
public static Pageable basicPage(Integer page, String orderField) {
return basicPage(page, 0, new SortDto("desc", orderField));
}
}
排序的工具类:
package com.pig.pigBase.tools;
import org.springframework.data.domain.Sort;
/**
* 封装排序
*/
public class SortTools {
public static Sort basicSort() {
return basicSort("desc", "id");
}
public static Sort basicSort(String orderType, String orderField) {
Sort sort = new Sort(Sort.Direction.fromString(orderType), orderField);
return sort;
}
public static Sort basicSort(SortDto... dtos) {
Sort result = null;
for (int i = 0; i < dtos.length; i++) {
SortDto dto = dtos[i];
if (result == null) {
result = new Sort(Sort.Direction.fromString(dto.getOrderType()), dto.getOrderField());
} else {
result = result.and(new Sort(Sort.Direction.fromString(dto.getOrderType()), dto.getOrderField()));
}
}
return result;
}
}
运用:(给用户进行分页查询)
package com.pig.manage.controller.apiController;
import com.alibaba.fastjson.JSONObject;
import com.google.common.collect.Maps;
import com.pig.manage.service.apiServiceImpl.*;
@RestController
@RequestMapping("/api/user")
public class ApiUserController {
private Logger LOGGER = LoggerFactory.getLogger(this.getClass());
@Autowired
private ApiUserServiceImpl apiUserService;
/**
* 用户列表接口
*
* @param jsonObject
* @return
*/
@PostMapping("/findAllUser")
public DataResponse findAllUser(@RequestBody JSONObject jsonObject) {
int pageNum = jsonObject.getInteger("pageNum");
int limit = jsonObject.getInteger("limit");
String trueName = jsonObject.getString("name");
String phone = jsonObject.getString("phone");
String status =jsonObject.getString("status");
String isReal=jsonObject.getString("isReal");
String type=jsonObject.getString("type");
Map<String, String> paramMap = new HashMap<>();
paramMap.put("trueName", trueName);
paramMap.put("phone", phone);
paramMap.put("status",status);
paramMap.put("isReal",isReal);
paramMap.put("type",type);
paramMap.put("isReceive","");
//分页查询
Page<ApiUser> apiUserPage = apiUserService.userPage(PageableTools.basicPage(pageNum-1, limit, new SortDto("DESC", "addTime")), paramMap);
for (ApiUser apiUser : apiUserPage.getContent()) {
apiUser.setIds(String.valueOf(apiUser.getId()));
apiUser.setOutPassword(null);
apiUser.setPassword(null);
}
List dataList = new ArrayList();
Map<String, Object> result = new HashMap<>();
result.put("data", apiUserPage.getContent());
result.put("totalPage", apiUserPage.getTotalPages());
result.put("totalSize", apiUserPage.getTotalElements());
dataList.add(result);
return new DataResponse(ConstantError.error_code_0, ConstantError.error_msg_0, dataList);
}
}