diff --git a/mybatis-flex-core/src/main/java/com/mybatisflex/core/BaseMapper.java b/mybatis-flex-core/src/main/java/com/mybatisflex/core/BaseMapper.java index 1faadd63..f09f9e88 100644 --- a/mybatis-flex-core/src/main/java/com/mybatisflex/core/BaseMapper.java +++ b/mybatis-flex-core/src/main/java/com/mybatisflex/core/BaseMapper.java @@ -542,17 +542,22 @@ public interface BaseMapper { */ default long selectCountByQuery(QueryWrapper queryWrapper) { List selectColumns = CPI.getSelectColumns(queryWrapper); - if (CollectionUtil.isEmpty(selectColumns)) { - queryWrapper.select(count()); - } - List objects = selectObjectListByQuery(queryWrapper); - Object object = objects == null || objects.isEmpty() ? null : objects.get(0); - if (object == null) { - return 0; - } else if (object instanceof Number) { - return ((Number) object).longValue(); - } else { - throw FlexExceptions.wrap("selectCountByQuery error, Can not get number value for queryWrapper: %s", queryWrapper); + try { + if (CollectionUtil.isEmpty(selectColumns)) { + queryWrapper.select(count()); + } + List objects = selectObjectListByQuery(queryWrapper); + Object object = objects == null || objects.isEmpty() ? null : objects.get(0); + if (object == null) { + return 0; + } else if (object instanceof Number) { + return ((Number) object).longValue(); + } else { + throw FlexExceptions.wrap("selectCountByQuery error, Can not get number value for queryWrapper: %s", queryWrapper); + } + } finally { + //fixed https://github.com/mybatis-flex/mybatis-flex/issues/49 + CPI.setSelectColumns(queryWrapper, selectColumns); } }