SQLQuery分页

项目中遇到一个需求,涉及到嵌套查询,使用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();
            


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值