SQLQuery分页

来源:互联网 发布:php tp框架下载 编辑:程序博客网 时间:2024/05/22 01:54

项目中遇到一个需求,涉及到嵌套查询,使用criteria不方便,便想使用SQLQuery直接写sql查询,但是因为查询结果需要分页,不知道如何解决。最后发现SQLQuery本身带有分页方法。setFirstResult和setMaxResults。

                StringBuilder dataQuery = new StringBuilder("");                dataQuery.append("SELECT USERNAME,EMP_NAME,EMP_DUTY_NAME,LISTAGG(ROLE_NAME, ',') WITHIN GROUP(ORDER BY ROLE_NAME),");                dataQuery.append(" DEPT_CODE,DEPT_NAME,PARENT_DEPT_CODE,STATUS FROM (SELECT TU.USERNAME, TE.EMP_NAME, TE.EMP_DUTY_NAME,");                dataQuery.append(" TR.ROLE_NAME, TD.DEPT_CODE,TD.DEPT_NAME,TD.PARENT_DEPT_CODE,TU.STATUS FROM TS_USER TU,TS_USER_ROLE TUR,TS_ROLE TR,TM_DEPARTMENT TD,TM_EMPLOYEE TE");                dataQuery.append(" WHERE TU.USER_ID = TUR.USER_ID AND TU.EMP_ID = TE.EMP_ID AND TUR.ROLE_ID = TR.ROLE_ID AND TU.DEPT_ID = TD.DEPT_ID");                dataQuery.append(conBuilder);                dataQuery.append(" AND 1 = 1 ORDER BY TU.USERNAME ASC) GROUP BY USERNAME,EMP_NAME,EMP_DUTY_NAME,DEPT_CODE,DEPT_NAME,PARENT_DEPT_CODE,STATUS");                SQLQuery query = session.createSQLQuery(dataQuery.toString());                query.setFirstResult(pageSize * pageIndex);                query.setMaxResults(pageSize).list();                return query.list();            


0 0