fixed: 修复 QueryWrapper 不能使用超过一次; github close #49

This commit is contained in:
开源海哥 2023-06-08 11:14:23 +08:00
parent 19ca5f9373
commit 4b1ddae7bd

View File

@ -542,17 +542,22 @@ public interface BaseMapper<T> {
*/ */
default long selectCountByQuery(QueryWrapper queryWrapper) { default long selectCountByQuery(QueryWrapper queryWrapper) {
List<QueryColumn> selectColumns = CPI.getSelectColumns(queryWrapper); List<QueryColumn> selectColumns = CPI.getSelectColumns(queryWrapper);
if (CollectionUtil.isEmpty(selectColumns)) { try {
queryWrapper.select(count()); if (CollectionUtil.isEmpty(selectColumns)) {
} queryWrapper.select(count());
List<Object> objects = selectObjectListByQuery(queryWrapper); }
Object object = objects == null || objects.isEmpty() ? null : objects.get(0); List<Object> objects = selectObjectListByQuery(queryWrapper);
if (object == null) { Object object = objects == null || objects.isEmpty() ? null : objects.get(0);
return 0; if (object == null) {
} else if (object instanceof Number) { return 0;
return ((Number) object).longValue(); } else if (object instanceof Number) {
} else { return ((Number) object).longValue();
throw FlexExceptions.wrap("selectCountByQuery error, Can not get number value for queryWrapper: %s", queryWrapper); } 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);
} }
} }