public <T> Page<T> queryForPage(Class<T> type, String sql, int pageNo, int pageSize, Object... args) { if(pageNo < 1) { throw new IllegalArgumentException("指定页数必须大于0"); } if(pageSize < 1) { throw new IllegalArgumentException("每页大小必须大于0"); } log.info("sql="+sql); String countsql = "select count(1) from ("+sql+") tmp_count"; log.info("countsql="+countsql); int totalSize = jdbcTemplate.queryForObject(countsql, args, Integer.class); int totalPage = (totalSize + pageSize - 1) / pageSize; int rownum = (pageNo - 1 ) * pageSize + 1; int rownumend = rownum + pageSize - 1; String pagesql = "SELECT * FROM (SELECT A.*, ROWNUM RN FROM (" + sql + ") A WHERE ROWNUM <= " + rownumend + ") WHERE RN >= " + rownum; log.info("pagesql="+pagesql); RowMapper<T> rm = getTableInfoData(type).getRowMapper(); List<T> list = jdbcTemplate.query(pagesql, args, rm); Page<T> p = new Page<T>(); p.setPageNo(pageNo); p.setPageSize(pageSize); p.setTotalPage(totalPage); p.setTotalSize(totalSize); p.setList(list); return p; }
java oralce jdbcTemplate 分页
最新推荐文章于 2024-07-22 02:29:01 发布