SpringCloud(4)—— EntityManage 分頁解決方案


由於數據庫運用的MySQL,采用分頁機制是滿足MySQL需求的

廢話少說,上代碼

1、不采用Pageable對象分頁,實際原理運用 MySQL中的limit分頁功能

     Long userid = requestInfo.getQuery();
        Integer currentPage = requestInfo.getCurrentPage();
        Integer pageSize = requestInfo.getPageSize();
     currentPage = currentPage * pageSize;//由於MySQL中的limit分頁機制:比如“limit 1, 5” ,意思從第一條 往后推算 5 條,所以currentPage頁碼需要乘上每頁條數 StringBuffer buffer
= new StringBuffer(""); System.out.println("獲取用戶ID信息:" + userid); buffer.append("select * from Rungrouppush r where r.userid = ? and readflag<>'S' order by pushdate desc,pushtime desc"); Query query = this.entityManager.createNativeQuery(buffer.toString()); //設置請求參數 query.setParameter(1, userid); //將查詢結果集轉為Map query.unwrap(SQLQuery.class).setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP); //設置分頁 query.setFirstResult(currentPage); query.setMaxResults(pageSize); //獲取查詢結果集 List<Map<String, Object>> rungroupInfo = query.getResultList(); List<Rungrouppush> rungrouppushList = EntityAndDTO.mapConvertToBean(rungroupInfo, Rungrouppush.class);

2、將查詢結果map轉換為實體類對象

package com.sinosoft.common;

import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.beans.BeanUtils;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

/**
 * 快速的 domain 轉換為DTO,
 * 將所有Enity 中和DTO中相同屬性的值進行轉換。
 */
public class EntityAndDTO {
    /**
     * 泛型的轉換接口需要傳入需要被轉換的對象和轉換后的對象的Class
     *
     * @param t
     * @param eClass
     * @param <E>
     * @param <T>
     * @return E
     */
    public static <E, T> E convert(T t, Class<E> eClass) {
        E e = null;
        try {
            e = eClass.newInstance();
            BeanUtils.copyProperties(t, e);

        } catch (InstantiationException e1) {
            e1.printStackTrace();
        } catch (IllegalAccessException e1) {
            e1.printStackTrace();
        }
        return e;
    }

    public static <E, T> List<E> convert(List<T> tList, Class<E> eClass) {

        List<E> eList = new ArrayList<E>();
        for (T t : tList) {
            eList.add(convert(t, eClass));
        }
        return eList;
    }

    /**
     * 將map結果集轉換為POJO對象
     * @param tList source
     * @param eClass class
     * @param <E> e
     * @param <T> t
     * @return t
     */
    public static <E, T> List<E> mapConvertToBean(List<T> tList, Class<E> eClass) {
        List<E> eList = new ArrayList<E>();
        try {
            for (T t : tList) {
                Map<String, Object> map = (Map<String, Object>) t;
                eList.add((E) mapConvertToObject(map, eClass));
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return eList;
    }

    /**
     * 將map轉換為POJO對象
     * @param map map
     * @param beanClass class
     * @return r
     */
    public static Object mapConvertToObject(Map<String, Object> map, Class beanClass) {
        ObjectMapper mapper = new ObjectMapper();
        Object pojo = mapper.convertValue(map, beanClass);
        return pojo;
    }

}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM