EntityManager 使用 Pageable 分页
生活随笔
收集整理的這篇文章主要介紹了
EntityManager 使用 Pageable 分页
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
參考:https://blog.csdn.net/qq_43948440/article/details/110877496
一,通用方法
/**
* 無參查詢,sql語句
* @param querySql sql
* @param pageable Pageable.unpaged() 代表不分頁
* @param destType 需要映射的類型
* @param <U>
* @return
*/
@Override
public <U> Page<U> findPage(String querySql, Pageable pageable,final Class<U> destType) {
Query query=em.createNativeQuery(querySql);
Page<U> page=findPage(query,pageable,destType);
return page;
}
/**
* 無參查詢,sql語句
* @param quer javax.persistence.Query
* @param pageable Pageable.unpaged() 代表不分頁
* @param destType 需要映射的類型
* @param <U>
* @return
*/
@Override
public <U> Page<U> findPage(Query query, Pageable pageable, Class<U> destType) {
String countSql = "SELECT COUNT(*) FROM ( "+ ((NativeQueryImpl) query).getQueryString() +" ) getcount";
Query countQuery = em.createNativeQuery(countSql);
for (Parameter param : query.getParameters())
{
countQuery.setParameter(param.getName(),query.getParameterValue(param.getName()));
}
BigInteger totalCount = (BigInteger) countQuery.getSingleResult();
if(pageable.isPaged()) {
query.setFirstResult((int) pageable.getOffset());
query.setMaxResults(pageable.getPageSize());
}
query.unwrap(NativeQueryImpl.class).setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP);
List resultList = query.getResultList();
Page<U> page = new PageImpl<>(resultList,pageable,totalCount.longValue());
return page;
}
二,調用
//分頁 Pageable pageable = PageRequest.of(pageIndex, pageSsize(), Sort.Direction.DESC, "create_time");
//不分頁 Pageable pageable=Pageable.unpaged() ;
public Page<entityDTO> findMachineToPlan(String a,Integer b,Pageable pageable) {
String sql = "select * from table where a=:a and b=:b";
Query query = em.createNativeQuery(sql);
query.setParameter("a", a);
query.setParameter("b", b);
Page<mac_machine_screen_res> page = findPage(query,pageable,entityDTO.class);
return page;
}
總結
以上是生活随笔為你收集整理的EntityManager 使用 Pageable 分页的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 怎么将ppt中插入的文件单独保存出来
- 下一篇: JMeter基础009----JMete