由于数据库运用的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; } }