我有一个查询,该查询在4个不同的表上有4个左联接。 当我在工作台中使用count()运行此查询时,它将返回2(即期望值)。通过我的代码运行时,相同的查询返回3000即count(),因为rowCount的值为3000。 这里有人遇到类似的问题吗?
调试步骤-
对我可以调试此问题的其他方式有何建议?
出于保密目的,我无法在此处粘贴查询
编辑:
int totalCount = 0;
StringBuilder queryBuilder = new StringBuilder(query.replace(QueryConstants.SELECT, QueryConstants.SELECT_COUNT));
try(Connection connection = dataSource.getConnection();
PreparedStatement countStatement = connection.prepareStatement(queryBuilder.toString());
ResultSet resultSet = countStatement.executeQuery()) {
while(resultSet.next()) {
totalCount = resultSet.getInt(1);
}
pageDetailsDTO.setTotal(totalCount);
所以我要在这里实现的是,首先,我将使用LIMIT和OFFSET执行prepareStatement并获取结果集。 其次,传递与String相同的prepareStatement,我将在名为 getTotalCount(String query,PageDetailsDTO pageDetailsDTO)的方法内调用上述逻辑,以了解没有LIMIT和OFFSET返回的记录数。该总数用于分页目的。 因此,我将用 Select count()作为rowCount *替换 Select 。