springboot整合jpa的分页操作

分页的工具类

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);
    }

   

}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值