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