Hibernate uses Criteria paging query example code

@Override
public Map<String,Object> findByRequestMap(HashMap requestMap) {
    Integer pageNum = 1;
    if(requestMap.containsKey("page")){
        pageNum = Integer.valueOf((String)requestMap.get("page"));
    }
    Integer pageSize = 10;
    if(requestMap.containsKey("limit")){
        pageSize = Integer.valueOf((String)requestMap.get("limit"));
    }
    Criteria criteria = getSession().createCriteria(SSOAccount.class);
    if (requestMap.containsKey("loginName")) {
        criteria.add(Restrictions.like("loginName", "%" + requestMap.get("loginName") + "%"));
    }
    if (requestMap.containsKey("mobile")) {
        criteria.add(Restrictions.like("mobile", "%" + requestMap.get("mobile") + "%"));
    } 
    if (requestMap.containsKey("userName")) { 
        criteria.add(Restrictions.like("userName", "%" + requestMap.get("userName") + "%")); 
    } 
    //can be used first Projections.rowCount() to get the total number of records, as follows: 
   // Long totalNum = (Long)criteria.setProjection(Projections.rowCount()).uniqueResult(); 
    criteria.setFirstResult((pageNum-1) * pageSize); 
    criteria .setMaxResults(pageSize); 
    Long totalNum = (Long)criteria.setProjection(Projections.rowCount()).uniqueResult(); 
   // Then set Projection to empty, and then perform normal paging. 
    criteria.setProjection(null); 
    Map resultMap = new HashMap<String,Object>(); 
    resultMap.put("data", ssoAccountList);
    return resultMap;
}

Guess you like

Origin blog.csdn.net/zy103118/article/details/109303191