/** * 按SQL分页查询对象列表. * * @param values 命名参数,按名称绑定. */ @SuppressWarnings({"unchecked", "rawtypes"}) public <X> SearchResult<X> findPageWithNameParamByNativeSQL( final int firstResult, final int maxResult, final String sql, final Map<String, ?> values) { SearchResult searResult = new SearchResult(); List<Object[]> objectList = createNativeQueryWithNameParam(sql, values) .setFirstResult(firstResult) .setMaxResults(maxResult) .getResultList(); String databaseType = DialectUtils.getDataBaseType(smartDataSource.getDataSource()); if (databaseType.equals("db2")) { List<Object[]> newobjectList = new ArrayList(); for (Object[] object : objectList) { Object[] newobject = new Object[object.length - 1]; for (int i = 0; i < object.length - 1; i++) { newobject[i] = object[i + 1]; } newobjectList.add(newobject); } objectList = newobjectList; } // 查询记录总数 String countSql = SQLUtils.buildCountSQL(sql); Object totalCount = createNativeQueryWithNameParam(countSql, values).getSingleResult(); searResult.setResult(objectList); searResult.setTotalCount(totalCount); return searResult; }