springboot mybatis 寫分頁

步驟 1: 分頁工具類

//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by Fernflower decompiler)
//

package com.mideaframework.core.bean;

import com.fasterxml.jackson.annotation.JsonFormat;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class PagingDomain  {
    private Integer pageNo;
    private Integer start = 0;
    private Integer pageSize = 30;
    private Date startTime;
    private Date endTime;
    private String orderBy = "1";
    private String orderByType = "asc";
    private String asc = " asc";
    private Map<String, List> dataMap = new HashMap();

    public PagingDomain() {
    }
-----添加get  set  方法
}

返回客戶端響應類工具

//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by Fernflower decompiler)
//

package com.mideaframework.core.web;

import com.google.common.collect.Lists;
import java.io.Serializable;
import java.util.List;

public class PageResponse<T> implements Serializable {
    private static final long serialVersionUID = -2103014265407834780L;
    public List<T> list;
    public Integer totalCount;
    public Integer totalPage;
    public Integer pageNo;
    public Integer pageSize;
    public Integer offset;

    public PageResponse() {
        this.list = Lists.newArrayList();
        this.totalCount = 0;
        this.totalPage = 0;
        this.pageNo = 1;
        this.pageSize = 30;
        this.offset = 0;
    }

    public List<T> getList() {
        return this.list;
    }

    public void setList(List<T> list) {
        this.list = list;
    }

    public Integer getTotalCount() {
        return this.totalCount;
    }

    public void setTotalCount(Integer totalCount) {
        this.totalCount = totalCount;
    }

    public Integer getTotalPage() {
        return this.totalPage;
    }

    public void setTotalPage(Integer totalPage) {
        this.totalPage = totalPage;
    }

    public Integer getPageNo() {
        return this.pageNo;
    }

    public void setPageNo(Integer pageNo) {
        this.pageNo = pageNo;
    }

    public Integer getPageSize() {
        return this.pageSize;
    }

    public void setPageSize(Integer pageSize) {
        this.pageSize = pageSize;
    }

    public Integer getOffset() {
        return this.offset;
    }

    public void setOffset(Integer offset) {
        this.offset = offset;
    }

    public PageResponse(Integer pageNo, Integer pageSize, Integer totalCount, List<T> list) {
        this.list = Lists.newArrayList();
        this.totalCount = 0;
        this.totalPage = 0;
        this.pageNo = 1;
        this.pageSize = 30;
        this.offset = 0;
        this.init(pageNo, pageSize, totalCount, list);
    }

    public PageResponse(Integer pageNo, Integer pageSize, Integer totalCount) {
        this(pageNo, pageSize, totalCount, (List)null);
    }

    public PageResponse(Integer pageNo, Integer pageSize) {
        this(pageNo, pageSize, (Integer)null);
    }

    public void init(Integer pageNo, Integer pageSize, Integer totalCount, List<T> list) {
        if (pageNo != null) {
            this.pageNo = pageNo;
        }

        if (pageSize != null) {
            this.pageSize = pageSize;
        }

        if (this.pageNo > 0) {
            this.offset = this.pageSize * this.pageNo;
        }

        if (totalCount != null) {
            this.totalCount = totalCount;
            this.totalPage = this.totalCount % pageSize > 0 ? this.totalCount / pageSize + 1 : this.totalCount / pageSize;
        }

        if (list != null) {
            this.list = list;
        }

    }
}

步驟2:實體類繼承  PagingDomain

public class ErpWorkOrder extends PagingDomain{}

步驟3 數據層 :

import com.midea.lmes.intelligent.logistics.domain.mes.base.entity.base.ErpWorkOrder;
import com.midea.lmes.intelligent.logistics.dto.mes.base.ErpWorkOrderDto;
import com.mideaframework.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;

@Mapper
public interface ErpWorkOrderMapper extends BaseMapper<ErpWorkOrder>{}

步驟4:業務層 使用分頁

@Override
public PageResponse<ErpWorkOrder> selectErpWorkOrderPage(ErpWorkOrder erpWorkOrder) {
    PageResponse<ErpWorkOrder> pagingData = new PageResponse<ErpWorkOrder>();
    if (null == erpWorkOrder) {
        LOGGER.warn("select erpWorkOrder page, but erpWorkOrder is null...");
        return pagingData;
    }
    //設置工單狀態 用於IN 關鍵字查詢
    if(StringUtils.isNotEmpty(erpWorkOrder.getStatusTypeName())){
        String[] str=erpWorkOrder.getStatusTypeName().split(",");
        StringBuffer stringBuffer =new StringBuffer();
        String statusTypeName="";
        List<String> list =new ArrayList<String>();
        for (int i = 0; i <str.length ; i++) {
            statusTypeName=str[i];
            list.add(statusTypeName);
        }
        erpWorkOrder.setList(list);
    }
    List<ErpWorkOrder> erpWorkOrders = selectErpWorkOrderByIndex(erpWorkOrder);
    if(erpWorkOrders !=null && erpWorkOrders.size()>0){
        SysOrg sysOrg = new SysOrg();;
        for (int i = 0; i <erpWorkOrders.size() ; i++) {
            if(erpWorkOrders.get(i).getMoLine() !=null && erpWorkOrders.get(i).getOrgId() !=null){
                sysOrg.setInvOrgId(ValueUtil.toInt(erpWorkOrders.get(i).getOrgId()));
                sysOrg.setSourceSystemId(ValueUtil.toInt(erpWorkOrders.get(i).getMoLine()));
                List<SysOrg> listSysOrg =sysOrgClient.queryLineCodeByCodeAndOrgId(sysOrg);
                if(listSysOrg !=null && listSysOrg.size()>0){
                    for (int j = 0; j <listSysOrg.size() ; j++) {
                        if(listSysOrg.get(j).getSourceSystemId()!=null
                         && erpWorkOrders.get(i).getMoLine().equals(listSysOrg.get(j).getSourceSystemId())
                         && erpWorkOrders.get(i).getOrgId().equals(ValueUtil.toLong(listSysOrg.get(j).getInvOrgId()))){
                            erpWorkOrders.get(i).setMoLineCode(listSysOrg.get(j).getCode());
                        }
                    }
                }else{
                    LOGGER.info("=====select SysOrg page ======服務異常, but count {} == 0 ...", listSysOrg.size());
                    return pagingData;
                }
            }

        }
        pagingData.setList(erpWorkOrders);
        Integer queryCount = erpWorkOrderMapper.selectByIndexCount(erpWorkOrder);
        pagingData.setTotalCount(queryCount);
        if (null != queryCount && queryCount <= 0) {
            LOGGER.info("select erpWorkOrder page , but count {} == 0 ...", queryCount);
            return pagingData;
        }
    }
    return pagingData;
}

步驟5 控制層

/**
 * @return 查詢集合
 */
 @PostMapping(value = "/fndContainerInvRelations/search")
 public JsonResponse search(@RequestBody FndContainerInvRelation fndContainerInvRelation,HttpServletRequest request) {
     RestDoing doing = jsonResponse -> {
        PageResponse<FndContainerInvRelation> PageResponse = fndContainerInvRelationServiceImpl.selectFndContainerInvRelationPage(fndContainerInvRelation);
        jsonResponse.data = PageResponse;
     };
    return doing.go(request, logger);

 }

返回客戶端響應類

//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by Fernflower decompiler)
//

package com.mideaframework.core.web;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.serializer.SerializerFeature;
import com.mideaframework.core.constants.BaseCodeEnum;
import com.mideaframework.core.exception.IBusinessException;
import java.io.Serializable;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;

public class JsonResponse<T> implements Serializable {
    private static final long serialVersionUID = -6609499448346439617L;
    private String code;
    private String msg;
    private String timestamp;
    public T data;

    public JsonResponse() {
        this.code = BaseCodeEnum.SUCCESS.getCode();
        this.msg = BaseCodeEnum.SUCCESS.getMsg();
    }

    public JsonResponse(IBusinessException resultCodeConstant) {
        this.code = BaseCodeEnum.SUCCESS.getCode();
        this.msg = BaseCodeEnum.SUCCESS.getMsg();
        this.code = resultCodeConstant.getCode();
        this.msg = resultCodeConstant.getMsg();
    }

    public JsonResponse(String code, String msg) {
        this.code = BaseCodeEnum.SUCCESS.getCode();
        this.msg = BaseCodeEnum.SUCCESS.getMsg();
        this.code = code;
        this.msg = msg;
    }

    private void saveJsonResult(IBusinessException resultCodeConstant) {
        this.code = resultCodeConstant.getCode();
        this.msg = resultCodeConstant.getMsg();
    }

    public void errorParam(String msg, Logger log) {
        this.code = BaseCodeEnum.FAILED.getCode();
        this.msg = BaseCodeEnum.FAILED.getMsg() + msg;
        log.error("error code|{}|msg|{}|", this.code, msg);
    }

    public void errorParam(String code, String msg, Logger log) {
        this.custom(code, msg, log);
    }

    public void custom(String code, String msg, Logger log) {
        this.code = code;
        this.msg = msg;
        log.error("error code|{}|msg:{}", code, msg);
    }

    public void saveResult(String codeInput, Logger log) {
        this.saveResult(codeInput, (String)null, (Logger)null);
    }

    public void saveResult(String codeInput, String msg, Logger log) {
        byte var5 = -1;
        switch(codeInput.hashCode()) {
        case 48:
            if (codeInput.equals("0")) {
                var5 = 0;
            }
        default:
            switch(var5) {
            case 0:
                this.saveJsonResult(BaseCodeEnum.SUCCESS);
                break;
            default:
                this.saveJsonResult(BaseCodeEnum.FAILED);
            }

            if (StringUtils.isNotBlank(msg)) {
                this.setMsg(msg);
            }

            if (null != log) {
                log.error("error code:{}|msg:{}", this.code, msg);
            }

        }
    }

    public String getTimestamp() {
        return this.timestamp;
    }

    public void setTimestamp(String timestamp) {
        this.timestamp = timestamp;
    }

    public String getCode() {
        return this.code;
    }

    public void setCode(String code) {
        this.code = code;
    }

    public String getMsg() {
        return this.msg;
    }

    public void setMsg(String msg) {
        this.msg = msg;
    }

    public T getData() {
        return this.data;
    }

    public void setData(T data) {
        this.data = data;
    }

    public void go(Logger logger) {
        StackTraceElement[] stackTrace = Thread.currentThread().getStackTrace();
        StackTraceElement[] var3 = stackTrace;
        int var4 = stackTrace.length;

        for(int var5 = 0; var5 < var4; ++var5) {
            StackTraceElement s = var3[var5];
            logger.error(s.getClassName() + ",-" + s.getMethodName() + ":[ " + s.getLineNumber() + "]");
        }

    }

    public JsonResponse build(String code, String msg) {
        this.code = code;
        this.msg = msg;
        LocalDateTime arrivalDate = LocalDateTime.now();
        DateTimeFormatter format = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss:SSS");
        String timestamp = arrivalDate.format(format);
        this.timestamp = timestamp;
        return this;
    }

    public String toString() {
        return JSON.toJSONStringWithDateFormat(this, "yyyy-MM-dd HH:mm:ss", new SerializerFeature[0]);
    }

    public static JsonResponse<Object> success(Object data) {
        JsonResponse<Object> jsonResponse = new JsonResponse(BaseCodeEnum.SUCCESS);
        jsonResponse.setData(data);
        return jsonResponse;
    }

    public static JsonResponse<Object> fail(String msg) {
        JsonResponse<Object> jsonResponse = new JsonResponse(BaseCodeEnum.FAILED.getCode(), msg);
        return jsonResponse;
    }

    public static JsonResponse<Object> fail(String code, String msg) {
        JsonResponse<Object> jsonResponse = new JsonResponse(code, msg);
        return jsonResponse;
    }
}
//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by Fernflower decompiler)
//

package com.mideaframework.core.web;

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.mideaframework.core.constants.BaseCodeEnum;
import com.mideaframework.core.exception.BusinessException;
import com.mideaframework.core.exception.CommonException;
import com.mideaframework.core.utils.SpringContextHolder;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Locale;
import javax.servlet.http.HttpServletRequest;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.MessageSource;
import org.springframework.transaction.NoTransactionException;
import org.springframework.transaction.interceptor.TransactionAspectSupport;

@FunctionalInterface
public interface RestDoing<T> {
    Logger log = LoggerFactory.getLogger(RestDoing.class);
    String sqlReturnFormat = "======================>return data : |{}|";

    default JsonResponse<T> go(Logger log) {
        return this.invoke((Object)null, (Object)null, (HttpServletRequest)null, (ObjectMapper)null, log);
    }

    default JsonResponse<T> go(HttpServletRequest r, Logger log) {
        return this.invoke((Object)null, (Object)null, r, (ObjectMapper)null, log);
    }

    default JsonResponse<T> go(HttpServletRequest r, ObjectMapper objectMapper, Logger log) {
        return this.invoke((Object)null, (Object)null, r, objectMapper, log);
    }

    default JsonResponse<T> go(Object visitor, HttpServletRequest request, ObjectMapper objectMapper, Logger log) {
        return this.invoke((Object)null, visitor, request, objectMapper, log);
    }

    default JsonResponse<T> go(Object inputData, Object visitor, HttpServletRequest request, ObjectMapper objectMapper, Logger log) {
        return this.invoke(inputData, visitor, request, objectMapper, log);
    }

    default JsonResponse<T> invoke(Object inputData, Object visitor, HttpServletRequest request, ObjectMapper objectMapper, Logger log) {
        JsonResponse<T> jr = new JsonResponse();
        Object[] args = null;

        try {
            this.service(jr);
        } catch (CommonException var24) {
            log.error("throw CommonException{}|", var24);
            throw var24;
        } catch (BusinessException var25) {
            try {
                TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
            } catch (NoTransactionException var23) {
                log.error("NoTransactionException happen|{}|", var25);
            }

            jr.errorParam(var25.getCode(), var25.getMessage(), log);
            args = var25.getArgs();
        } catch (Exception var26) {
            try {
                TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
            } catch (NoTransactionException var22) {
                log.error("NoTransactionException happen|{}|", var26);
            }

            log.error("error happen|{}|", var26);
            jr.saveResult(BaseCodeEnum.FAILED.getCode(), log);
        } finally {
            this.showReturnData(jr, objectMapper, log);
        }

        LocalDateTime arrivalDate = LocalDateTime.now();
        DateTimeFormatter format = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS");
        String timestamp = arrivalDate.format(format);
        if (StringUtils.isBlank(jr.getMsg())) {
            try {
                MessageSource messageSource = (MessageSource)SpringContextHolder.getBean(MessageSource.class);
                Locale locale = Locale.SIMPLIFIED_CHINESE;
                String msg = messageSource.getMessage(jr.getCode(), args, locale);
                jr.setMsg(msg);
            } catch (Exception var21) {
                log.error("cannot find messageSource,error:{}", var21.getMessage());
            }
        }

        jr.setTimestamp(timestamp);
        return jr;
    }

    default void showReturnData(JsonResponse jr, ObjectMapper objectMapper, Logger log) {
        if (objectMapper != null) {
            try {
                String returnData = objectMapper.writeValueAsString(jr);
                log.warn("======================>return data : |{}|", returnData);
            } catch (JsonProcessingException var5) {
                log.error(var5.getMessage(), var5);
            }
        }

    }

    void service(JsonResponse<T> var1) throws Exception;
}

步驟6 xml 文件

<select id="selectByIndexCount" resultType="Integer">
    select count(t.id)
    from erp_work_order t
    <include refid="whereFieldsSql"/>
</select>

<select id="selectByIndex" resultType="com.midea.lmes.intelligent.logistics.domain.mes.base.entity.base.ErpWorkOrder">
    select
    <include refid="searchFieldsSql"/>
    from erp_work_order t
    <include refid="whereFieldsSql"/>
    limit #{start},#{pageSize}
</select>

前端傳給後臺 字段  vue.js 

{"pageNo":1,"pageSize":10}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章