sql:mysql:limit分页

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/weixin_38750084/article/details/88597630

1.前端接收不同参数过来

2.根据不同条件拼sql

3.使用limit分页(前端要传一个pageNum和pageSize,即第几页,每页展示多少条)

4.返回结果(封装对象StringData返回前端即json格式)

如下代码参考:

controller:

/**
     * 客户服务统计接口
     * @param json
     * @return
     */
    @CrossOrigin
    @PostMapping(value = "/customerServerSearch", produces = {"application/json;charset=UTF-8"})
    public StringData customerServerSearch(@RequestBody String json) {
        StringData data = new StringData();
        Map<EnumCustomerServerQuryParam, String> quryParamMap = new HashMap();
        try {
            LogUtil.print("接收消息:   "+json);
            //解析json消息
            JSONObject jsonobj =  JSONObject.parseObject(json);
            String pageNo = jsonobj.getString("pageNo");
            String pageSize = jsonobj.getString("pageSize");
            String companyName = jsonobj.getString("companyName");
            String brand = jsonobj.getString("brand");
            String serverType = jsonobj.getString("serverType");
            String clientFrom = jsonobj.getString("clientFrom");
            String contractInto = jsonobj.getString("contractInto");
            String moneyCount = jsonobj.getString("moneyCount");
            String startTime = jsonobj.getString("startTime");
            String endTime  = jsonobj.getString("endTime");

            if (StringUtils.isNotBlank(pageNo)) {
                quryParamMap.put(EnumCustomerServerQuryParam.pageNo, pageNo);
            }
            if (StringUtils.isNotBlank(pageSize)) {
                quryParamMap.put(EnumCustomerServerQuryParam.pageSize, pageSize);
            }
            if (StringUtils.isNotBlank(companyName)) {
                quryParamMap.put(EnumCustomerServerQuryParam.companyName, companyName);
            }
            if (StringUtils.isNotBlank(brand)) {
                quryParamMap.put(EnumCustomerServerQuryParam.brand, brand);
            }
            if (StringUtils.isNotBlank(serverType)) {
                quryParamMap.put(EnumCustomerServerQuryParam.serverType, serverType);
            }
            if (StringUtils.isNotBlank(clientFrom)) {
                quryParamMap.put(EnumCustomerServerQuryParam.clientFrom, clientFrom);
            }
            if (StringUtils.isNotBlank(contractInto)) {
                quryParamMap.put(EnumCustomerServerQuryParam.contractInto, contractInto);
            }
            if (StringUtils.isNotBlank(moneyCount)) {
                quryParamMap.put(EnumCustomerServerQuryParam.moneyCount, moneyCount);
            }
            if (StringUtils.isNotBlank(startTime)) {
                quryParamMap.put(EnumCustomerServerQuryParam.startTime, startTime);
            }
            if (StringUtils.isNotBlank(endTime)) {
                quryParamMap.put(EnumCustomerServerQuryParam.endTime, endTime);
            }

            Page results = iCalCustomerServerService.searchResult(quryParamMap);
            if(null!=results.getData() && results.getData().size()>0){
                data.success();
                data.setData(results);
            }else {
                data.dataNull();
            }
        } catch (Exception e) {
            // e.printStackTrace();
            LogUtil.error(DateUtil.fmtDateToStr(new Date(),"yyyy-MM-dd HH:mm:ss")+"http接口异常",e.getMessage(),e);
            data.error();
        }
        return data;
    }

service:

@Override
    public Page searchResult(Map<EnumCustomerServerQuryParam, String> quryParamMap) {

            String sql = "";
            //计算start、rows
            int start = 0;
            int pageNo = 1;
            int pageSize = 10;
            String companyName="";
            String brand="";
            String serverType="";
            String clientFrom="";
            String contractInto="";
            String moneyCount="";
            String startTime="";
            String endTime="";
            Page<CompanyForListModel> page = new Page<CompanyForListModel>();
            List<CompanyForListModel> listModels = new ArrayList<CompanyForListModel>();
            if (quryParamMap == null || quryParamMap.size() == 0) {
    //            throw new Exception("", "查询参数不能为空!" );
            }
            try {

                //查询条件
                if (quryParamMap.containsKey(EnumCustomerServerQuryParam.pageNo)) {
                    try {
                        pageNo = Integer.parseInt(quryParamMap.get(EnumCustomerServerQuryParam.pageNo));
                    } catch (Exception e) {
                        LogUtil.error("CalCustomerServerServiceImpl", "类型转换异常", e);
                    }
                }
                if (pageNo < 1) {
                    pageNo = 1;
                }
                if (quryParamMap.containsKey(EnumCustomerServerQuryParam.pageSize)) {
                    try {
                        pageSize = Integer.parseInt(quryParamMap.get(EnumCustomerServerQuryParam.pageSize));
                    } catch (Exception e) {
                        LogUtil.error("CalCustomerServerServiceImpl", "类型转换异常", e);
                    }
                }
                if (pageSize < 0) {
                    pageSize = 10;
                }
                start = (pageNo - 1) * pageSize;

                if (quryParamMap.containsKey(EnumCustomerServerQuryParam.companyName)){
                    companyName= quryParamMap.get(EnumCustomerServerQuryParam.companyName);
                }
                if (quryParamMap.containsKey(EnumCustomerServerQuryParam.brand)){
                    brand= quryParamMap.get(EnumCustomerServerQuryParam.brand);
                }
                if (quryParamMap.containsKey(EnumCustomerServerQuryParam.serverType)){
                    serverType= quryParamMap.get(EnumCustomerServerQuryParam.serverType);
                }
                if (quryParamMap.containsKey(EnumCustomerServerQuryParam.clientFrom)){
                    clientFrom= quryParamMap.get(EnumCustomerServerQuryParam.clientFrom);
                }
                if (quryParamMap.containsKey(EnumCustomerServerQuryParam.contractInto)){
                    contractInto= quryParamMap.get(EnumCustomerServerQuryParam.contractInto);
                }
                if (quryParamMap.containsKey(EnumCustomerServerQuryParam.moneyCount)){
                    moneyCount= quryParamMap.get(EnumCustomerServerQuryParam.moneyCount);
                }
                if (quryParamMap.containsKey(EnumCustomerServerQuryParam.startTime)){
                    startTime= quryParamMap.get(EnumCustomerServerQuryParam.startTime);
                }
                if (quryParamMap.containsKey(EnumCustomerServerQuryParam.endTime)){
                    endTime= quryParamMap.get(EnumCustomerServerQuryParam.endTime);
                }

                //通过合同查公司,找出满足查询条件的合同的所有公司,然后再查询结果
                StringBuffer sq= new StringBuffer();
                sq.append("SELECT distinct(company_name) FROM t_cal_contract ");
                if(quryParamMap!=null && quryParamMap.size()>0){
                    sq.append(" WHERE ");
                }
                if(StringUtil.isNotBlank(companyName)){
                    sq.append(" company_name='"+companyName+"' AND ");
                }
                if(StringUtil.isNotBlank(brand)){
                    sq.append(" brand_own='"+brand+"' AND ");
                }
                if(StringUtil.isNotBlank(serverType)){
                    sq.append(" service_type='"+serverType+"' AND ");
                }
                if(StringUtil.isNotBlank(clientFrom)){
                    sq.append(" customer_source='"+clientFrom+"' AND ");
                }
                if(StringUtil.isNotBlank(contractInto)){
                    sq.append(" contract_status='"+contractInto+"' AND ");
                }
                if(StringUtil.isNotBlank(startTime)){
                    sq.append(" contract_start_time>='"+startTime+"' AND ");
                }
                if(StringUtil.isNotBlank(endTime)){
                    sq.append(" contract_due_time<= '"+endTime+"' ");
                }
                if(sq.toString().endsWith("AND")){
                    sq.substring(0,sq.length()-3);
                }
                sq.append(" limit "+start+","+pageSize);
                LogUtil.print("sql:  " + sq);
                Query qry = em.createNativeQuery(sq.toString());
                qry.unwrap(org.hibernate.SQLQuery.class)
                        .setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP);
                List<Map<String, Object>> rws = qry.getResultList();
                Set<String> lis = new HashSet<String>();
                if (null != rws && rws.size() > 0) {
                    String cn="";
                    for (Map<String, Object> m : rws) {
                        if (null != m.get("company_name"))
                           cn = m.get("company_name").toString();
                        lis.add(cn);
                    }
                }
                //total
                String sql_sub="";
                if(sq.toString().contains("limit")){
                    sql_sub=sq.toString().split("limit")[0];
                }

                LogUtil.print("sql:  " + sql_sub);
                Query qy = em.createNativeQuery(sql_sub);
                qy.unwrap(org.hibernate.SQLQuery.class)
                        .setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP);
                List<Map<String, Object>> rs = qy.getResultList();
                Set<String> li = new HashSet<String>();
                if (null != rs && rs.size() > 0) {
                    String cn="";
                    for (Map<String, Object> m : rs) {
                        if (null != m.get("company_name"))
                            cn = m.get("company_name").toString();
                        li.add(cn);
                    }
                }




                for (String cnm: lis ) {
                    sq= new StringBuffer();
                    sq.append("SELECT" +
                            "    *" +
                            " FROM" +
                            "    t_cal_company WHERE company_name ='"+cnm+"' ") ;
                    if(StringUtil.isNotBlank(moneyCount)){
                        sq.append(" AND money_back_times='"+moneyCount+"'");
                    }
                    LogUtil.print("sql:  " + sq);
                    Query query = em.createNativeQuery(sq.toString());
                    query.unwrap(org.hibernate.SQLQuery.class)
                            .setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP);
                    List<Map<String, Object>> rows = query.getResultList();
                    if (null != rows && rows.size() > 0) {
                        CompanyForListModel companyForListModel = null;
                        for (Map<String, Object> map : rows) {
                            companyForListModel = new CompanyForListModel();
                            companyForListModel.setId(Long.valueOf(map.get("id").toString()));
                            if (null != map.get("company_name"))
                                companyName = map.get("company_name").toString();
                            companyForListModel.setCompanyName(companyName);
                            if (null != map.get("industry_level_one"))
                                companyForListModel.setIndustryName(map.get("industry_level_one").toString());
                            if (null != map.get("city_name"))
                                companyForListModel.setCityName(map.get("city_name").toString());
                            if (null != map.get("corporate_nature"))
                                companyForListModel.setCompanyNatueName(map.get("corporate_nature").toString());
                            if (null != map.get("financ_stage"))
                                companyForListModel.setFinancing(map.get("financ_stage").toString());
                            if (null != map.get("cooperation_times"))
                                companyForListModel.setCooperateCount(Integer.valueOf(map.get("cooperation_times").toString()));
                            if (null != map.get("recommend_report_num"))
                                companyForListModel.setReportCount(Integer.valueOf(map.get("recommend_report_num").toString()));
                            if (null != map.get("offers_num"))
                                companyForListModel.setOfferCount(Integer.valueOf(map.get("offers_num").toString()));
                            if (null != map.get("money_back_times"))
                                companyForListModel.setMoneyCount(Integer.valueOf(map.get("money_back_times").toString()));
                            if (null != map.get("money_back_total"))
                                companyForListModel.setMoneyTotal(map.get("money_back_total").toString());

                            List<CompanyForListModel.Contract> liscc = new ArrayList<>();
                            sql = "SELECT" +
                                    "    *" +
                                    " FROM" +
                                    "    t_cal_contract" +
                                    " WHERE" +
                                    "    company_name='"+companyName+"'";
                            LogUtil.print("sql:  " + sql);
                            Query que = em.createNativeQuery(sql);
                            que.unwrap(org.hibernate.SQLQuery.class)
                                    .setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP);
                            List<Map<String, Object>> ros = que.getResultList();
                            if (null != ros && ros.size() > 0) {
                                for (Map<String, Object> ma : ros) {
                                    CompanyForListModel.Contract cc = new CompanyForListModel.Contract();
                                    if (null != ma.get("brand_own"))
                                        cc.setBrand(ma.get("brand_own").toString());
                                    if (null != ma.get("customer_source"))
                                        cc.setClientFrom(ma.get("customer_source").toString());
                                    if (null != ma.get("service_type"))
                                        cc.setServerType(ma.get("service_type").toString());
                                    if (null != ma.get("contract_due_time"))
                                        cc.setContractDueTime(ma.get("contract_due_time").toString().substring(0,10));
                                    if (null != ma.get("contract_status"))
                                        cc.setContractInto(ma.get("contract_status").toString());
                                    liscc.add(cc);
                                }
                            }
                            if (null != liscc && liscc.size() > 0) {
                                companyForListModel.setList(liscc);
                            }
                            listModels.add(companyForListModel);
                        }
                        page.setTotal(li.size());
                        page.setPageNo(pageNo);
                        page.setPageSize(listModels.size());
                        page.setData(listModels);
                    }
                }

            }catch (Exception e) {
                LogUtil.print("sql:  "+sql);
                e.printStackTrace();
                LogUtil.error("客户服务接口,错误信息:", e.getMessage(), e);
            }

        return page;
    }

封装的page:

public class Page<T> implements Serializable {
	private int pageSize  = 10;
	private int pageNo = 1;
	private int total;
	private List<T> data = new ArrayList<>(0);


	public int getPageSize() {
		return pageSize;
	}
	public void setPageSize(int pageSize) {
		this.pageSize = pageSize;
	}
	public int getPageNo() {
		return pageNo;
	}
	public void setPageNo(int pageNo) {
		this.pageNo = pageNo;
	}
	public List<T> getData() {
		return data;
	}
	public void setData(List<T> data) {
		this.data = data;
	}

	public int getTotal() {
		return total;
	}

	public void setTotal(int total) {
		this.total = total;
	}

	@Override
	public String toString() {
		return "Page{" +
				"pageSize=" + pageSize +
				", pageNo=" + pageNo +
				", total=" + total +
				", data=" + data +
				'}';
	}
}
public class StringData<T>{
    private final static String SUCCESS = "success";
    private final static String ERROR = "errot";
    private final static String DATANULL = "dataNull";
    private T data;  //实体
    private String code;   //返回状态码
    private String msg;   //返回状态
//    private Map<String,T> dataMap; //返回参数

    public static String getSUCCESS() {
        return SUCCESS;
    }

    public static String getERROR() {
        return ERROR;
    }

    public T getData() {
        return data;
    }

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

    public String getCode() {
        return code;
    }

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

    public String getMsg() {
        return msg;
    }

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

//    public Map<String, T> getDataMap() {
//        return dataMap;
//    }
//
//    public void setDataMap(Map<String, T> dataMap) {
//        this.dataMap = dataMap;
//    }

    public void success() {
        this.code = EnumHttpStatusType.success.getCode()+"";
        this.msg=EnumHttpStatusType.success.getStatus();
    }

    public void error() {
        this.code = EnumHttpStatusType.error.getCode()+"";
        this.msg=EnumHttpStatusType.error.getStatus();
    }

    public void dataNull() {
        this.code = EnumHttpStatusType.data_null.getCode()+"";
        this.msg= EnumHttpStatusType.data_null.getStatus();
    }

结果展示:

猜你喜欢

转载自blog.csdn.net/weixin_38750084/article/details/88597630