Hibernate Criteria 페이지 에서 발생 하 는 문 제 는 페이지 를 나 누 려 면 총 기록 수 를 알 아야 한 다 는 것 을 잘 알 고 있 습 니 다. 이것 은 우리 에 게 작은 문 제 를 주 었 습 니 다. 흔히 우 리 는 Criteria 호출 list 방법 으로 모든 조회 결 과 를 되 돌려 주지 만 페이지 는 목록 으로 돌아 가기 전에 총 줄 수 를 받 아야 합 니 다.제 가 예전 에 한 방법 은 두 가지 방법 을 쓰 는 것 이 었 습 니 다. 매개 변 수 는 똑 같 습 니 다. 하 나 는 Integer, 즉 기록 수, 하 나 는 List, 결과 집 으로 돌아 가 는 것 입 니 다.이렇게 쓰 는 것 은 매우 번 거 로 운 것 같 습 니 다. 그리고 criteria. list () 로 기록 수 를 되 돌려 주 고 페이지 속성 을 설정 하 는 사람 도 있 습 니 다. 그러면 무슨 페이지 라 고 합 니까? list 를 호출 하여 데 이 터 를 메모리 에 불 러 왔 습 니 다. 그것 은 또 메모리 페이지 가 되 지 않 았 습 니 다. 이런 방법 은 프로그램 처리 가 간단 하고 성 이 떨 어 질 수 있 습 니 다. 오늘 인터넷 을 돌아 다 니 면서 새로운 방법 을 발 견 했 습 니 다. 코드 는 다음 과 같 습 니 다. 회색 기울 임 꼴 은 업무 관련 코드 입 니 다. 무시 하 십시오. public Object doInHibernate(Session session) throws HibernateException, SQLException { Criteria criteria = session.createCriteria(XtLog.class); Criteria userCriteria = criteria.createCriteria("xtUser"); Criteria lcCriteria = criteria.createCriteria("xtLogClass"); if (StringUtils.isNotBlank(userId)) { userCriteria.add(Restrictions.like("userId", userId, MatchMode.START)); } if (StringUtils.isNotBlank(logClassId)) { lcCriteria.add(Restrictions.eq("logClassId", logClassId)); } if (beginDate != null && endDate != null) { criteria.add(Restrictions.between("xtOplogtime", beginDate, endDate)); } int totalRows =((Integer) criteria.setProjection(Projections.rowCount()).uniqueResult()).intValue(); psm.setTotalRows(totalRows); // 비 즈 니스 코드 무시 하 세 요. criteria.setProjection(null); criteria.setResultTransformer(CriteriaSpecification.ROOT_ENTITY); Map orderMap = psm.getOrderMap(); if(orderMap != null){ setOrder(criteria, userCriteria, lcCriteria, orderMap); } if(!psm.isAll()){ // 페이지 를 나누다 criteria.setFirstResult(psm.getRowStart()); criteria.setMaxResults(psm.getPageSize()); } // List < XtLog > logs = new ArrayList < XtLog > (); / / 로그 목록 을 되 돌려 줍 니 다. // List
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다: